Support » Allgemeine Fragen » Sticky post Wiedergabe in sidebar unterdrücken

  • Gelöst Wolf Mehrdampf

    (@wolf-mehrdampf)


    Hallo,
    ich habe einen Sticky post als Einleitung für meinen Blog angelegt. Dabei habe ich die Wiedergabe des Titels und der entry-meta Angaben per css unterdrückt. Leider wird der Beitrag aber noch in der sidebar angezeigt, z.B. als neuester Beitrag innerhalb von fünf „Letzte Beiträge“.
    Wie kann ich den Sticky post in der sidebar unterdrücken? Gibt es ein conditional tag dafür (if is sticky …), und wo würde man es einbauen?
    Wolf

Ansicht von 5 Antworten - 1 bis 5 (von insgesamt 5)
  • Es gibt tatsächlich ein Conditional Tag is_sticky();, wobei man für das Sidebar-Widget dann wohl eher die WP_Query anpassen würde:

    $query = new WP_Query( array( 'post__not_in' => get_option( 'sticky_posts' ) ) );

    Abgesehen halte ich das aber vom Ansatz falsch. Wenn es dir darum geht, oberhalb der Blogbeiträge eine Einleitung zu zeigen, würde ich einen benutzerdefinierten Inhaltstyp (Custom Post Type) „Startseite“ erstellen und diesen im Template home.php mit get_post() abrufen. Alternativ bietet sich auch eine Theme-Option an, in der der Einführungstext abgelegt wird. Nachteil ist dabei die fehlende visuelle Eingabe und es gibt auch keinen eigenen Menüeintrag, was die Sache etwas unübersichtlicher macht.

    Thread-Ersteller Wolf Mehrdampf

    (@wolf-mehrdampf)

    Danke für die umgehende Antwort. Ich würde geren den Ansatz des Custom Post Type weiterverfolgen. Aber ich verwende twentythirteen, und dort finde ich keine Datei home.php – nur index.php, page.php, content.php … Wennn ich es richtig verstanden habe, dann müsste ich eine extra Datei, z.B. einleitung.php, mit dem Einleitungstext erstellen.

    Thread-Ersteller Wolf Mehrdampf

    (@wolf-mehrdampf)

    Ich habe mein Problem gelöst.
    Ich habe eine php-Datei „einleitung.php“ mit dem Einleitungstext angelegt:
    <?php
    if ( is_front_page() ) {
    echo „Dies ist ein Einleitungstext …“;
    }
    ?>

    In die Datei „index.php“ habe ich nach <?php if have_posts() ) : ?> eingefügt:
    <?php get_template_part( ‚einleitung‘, get_post_format() ); ?>

    Das Theme Twenty Thirteen verwendet kein eigenes Template für die Startseite. Auf Grund der Template-Hierarchy fällt WordPress für eine Startseite, die Beiträge anzeigt, auf die index.php zurück, die du in einem Child Theme ergänzen musst.

    Wie ein Child Theme erstellt wird, hat Ellen sehr schön beschrieben, da will ich nicht im Detail drauf eingehen. In deinem Child Theme müsstest du eine Kopie der index.php des Parent-Theme anlegen und wie folgt ändern:

    get_header(); ?>
    
    	<div id="primary" class="content-area">
    		<div id="content" class="site-content" role="main">
    
    /* Hier wird der Text für die Eingangsseite abgerufen */
    <?php
      	$args = array(
    		 'posts_per_page'  => 1,
    		 'orderby'         => 'date',
    		 'order'           => 'DESC',
    		 'post_type'       => 'startseite',
    		 'post_status'     => 'publish'
    		);
    		$intro_array = get_posts( $args );
    
    		if( $intro_array ) {
    		foreach ( $intro_array as $post ) : setup_postdata( $post );?>
    			<article <?php post_class('intro'); ?> >
    				<header class="entry-header">
    				<h1 class="entry-title"><?php the_title(); ?></h1>
    			  <?php	the_content(); ?>
    			</header>
    			</article>
    
    <?php endforeach;
    wp_reset_postdata();
    }?>
    
    /* ab hier wieder alles wie gehabt */
    		<?php if ( have_posts() ) : ?>
    
    			<?php /* The loop */ ?>

    Den benutzerdefinierten Inhaltstyp kannst du entweder mit einem Plugin erstellen oder du kopierst diesen Code in die functions.php des Child Themes:

    // Custom Post Type für Startseite
    function custom_post_type() {
    
    	$labels = array(
    		'name'                  => 'Einführungen Startseite',
    		'singular_name'         => 'Einführung Startseite',
    		'menu_name'             => 'Startseite',
    		'name_admin_bar'        => 'Startseite',
    		'all_items'             => 'Alle Einleitungen',
    		'add_new_item'          => 'Neue Einleitung hinzufügen',
    		'add_new'               => 'Hinzufügen',
    		'new_item'              => 'Neue Einleitung',
    		'edit_item'             => 'Einleitung bearbeiten',
    		'update_item'           => 'Einleitung aktualisieren',
    		'view_item'             => 'Einleitung ansehen',
    		'search_items'          => 'Einleitung suchen',
    		'not_found'             => 'Nicht gefunden',
    		'not_found_in_trash'    => 'Nicht im Papierkorb gefunden',
    		'featured_image'        => 'Einleitungs-Bild',
    		'set_featured_image'    => 'Einleitungs-Bild festlegen',
    		'remove_featured_image' => 'Einleiutungs-Bild entfernen',
    		'use_featured_image'    => 'Als Einleitungsbild verwenden',
    		'insert_into_item'      => 'In Einleitung einfügen',
    		'uploaded_to_this_item' => 'In Einleitung hochgeladen',
    		'items_list'            => 'Liste der Einleitungen',
    		'items_list_navigation' => 'Navigation Einleitungsliste',
    		'filter_items_list'     => 'Einleitungsliste filtern',
    	);
    	$args = array(
    		'label'                 => 'Einführung Startseite',
    		'description'           => 'Inhalt für eine Einführung auf der Startseite',
    		'labels'                => $labels,
    		'supports'              => array( 'title', 'editor', 'thumbnail', 'revisions', ),
    		'taxonomies'            => array( 'category', 'post_tag' ),
    		'hierarchical'          => false,
    		'public'                => true,
    		'show_ui'               => true,
    		'show_in_menu'          => true,
    		'menu_position'         => 20,
    		'menu_icon'             => 'dashicons-admin-home',
    		'show_in_admin_bar'     => false,
    		'show_in_nav_menus'     => true,
    		'can_export'            => true,
    		'has_archive'           => false,
    		'exclude_from_search'   => false,
    		'publicly_queryable'    => true,
    		'capability_type'       => 'page',
    	);
    	register_post_type( 'startseite', $args );
    
    }
    add_action( 'init', 'custom_post_type', 0 );

    Thread-Ersteller Wolf Mehrdampf

    (@wolf-mehrdampf)

    Ich habe diese Variante erst heute ausprobieren können. Sie klappt so gut wie meine davor gefundene Lösung. Beide Lösungen haben allerdings das gleiche Problem: Solange man auf der Startseite ist, z.B. auch beim Zurückklicken auf ältere Posts, bleibt die Einleitung im Kopf stehen. Eigentlich sollte sie nur über dem aktuellen Post sichtbar sein.

Ansicht von 5 Antworten - 1 bis 5 (von insgesamt 5)
  • Das Thema „Sticky post Wiedergabe in sidebar unterdrücken“ ist für neue Antworten geschlossen.