WordPress: Shortcode für Ausgabe von Custom Post Type erstellen

WordPress Custom Post Types sind eine geniale Sache, schnell wird durch diese aus dem einfachen WordPress Baustein ein mächtiges und angepasstes Portal.

Angenommen ihr wollt z.b. die Sponsoren eures Fußballvereins einfach verwalten und an speziellen Stellen einen dieser ausgeben, dann bietet es sich an dafür einen Shortcode mit integrierter Abfrage zu erstellen. Dann könnt ihr an beliebiger Stelle einfach den Shortcode

[sponsor-listing anzahl="3"]

einfügen und bekommt dort 3 zufällige Sponsoren ausgegeben. Damit das ganze Funktioniert sollte natürlich der Entsprechende Custom Post Type vorhanden sein.

// Register Custom Post Type
function sl_sponsoren_register() {

	$labels = array(
		'name'                => 'Sponsoren',
		'singular_name'       => 'Sponsor',
		'menu_name'           => 'Sponsoren',
		'name_admin_bar'      => 'Sponsoren',
		'parent_item_colon'   => 'Sponsor',
		'all_items'           => 'alle Sponsoren',
		'add_new_item'        => 'neuen Sponsor erstellen',
		'add_new'             => 'Neuen Sponsor',
		'new_item'            => 'neuer Sponsor',
		'edit_item'           => 'Sponsor bearbeiten',
		'update_item'         => 'Sponsor Speichern',
		'view_item'           => 'Sponsor anzeigen',
		'search_items'        => 'Sponsor suchen',
		'not_found'           => 'nichts gefunden',
		'not_found_in_trash'  => 'nichts gefunden',
	);
	$args = array(
		'label'               => 'Sponsor',
		'description'         => 'Sponsoren',
		'labels'              => $labels,
		'supports'            => array( ),
		'hierarchical'        => false,
		'public'              => true,
		'show_ui'             => true,
		'show_in_menu'        => true,
		'menu_position'       => 5,
		'show_in_admin_bar'   => true,
		'show_in_nav_menus'   => true,
		'can_export'          => true,
		'has_archive'         => true,		
		'exclude_from_search' => false,
		'publicly_queryable'  => true,
		'capability_type'     => 'page',
	);
	register_post_type( 'sponsor', $args );

}
add_action( 'init', 'sl_sponsoren_register', 0 );

Der Posttype sollte in eurer functions.php registiert sein (oder natürlich in einem Plugin).

In der functions.php erstellen wir nun einen Shortcode, der es uns ermöglicht eine Query durch unsere Sponsoren auszuführen:

add_shortcode( 'sponsor-listing', 'sl_sponsorlisting' );
function sl_sponsorlisting( $atts ) {
    ob_start();
 
    // Attribute holen
    extract( shortcode_atts( array (
        'anzahl' => 'anzahl'
      ), $atts ) );
 
    $options = array(
        'post_type' => 'sponsor',
        'orderby' => 'rand',
        'posts_per_page' => $anzahl,
    );
    $query = new WP_Query( $options );
    if ( $query->have_posts() ) { 
             the_content(); 
   
        return = ob_get_clean();
    }
}

Danke!   2

Ich bin David, 27, stolzer Papa, Ostmopedliebhaber und Anwendungsentwickler aus Fulda und konserviere nach dem Feierabend meine Problemchen über die ich tagsüber so gestolpert bin.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.