it-swarm.com.de

Sticky Post von der Hauptabfrage ausschließen?

Ich habe viel Ärger damit. Ich habe <?php query_posts( array( 'post__not_in' => get_option( 'sticky_posts' ), 'paged' => get_query_var( 'paged' ) ) ); ?> verwendet, um die Posts von der Hauptabfrage auf meiner Homepage auszuschließen, da im Schieberegler Stickies verwendet werden. Ich mache dieses Thema für wordpress.org und mir wurde gesagt, dass dies nicht empfohlen wurde. Ich habe dann versucht, dies zu meiner functions.php hinzuzufügen, aber ohne Erfolg:

/**
 * Excluding sticky posts from home page. Sticky posts are in a slider.
 *
 * @since 0.1
 */
function essential_exclude_sticky( $query ) {

    /* Exclude if is home and is main query. */
    if ( is_home() && $query->is_main_query() )
        $query->set( 'ignore_sticky_posts', true );

}

`

Irgendeine Idee, was ich falsch mache?

5
Steven

query_posts wird nicht empfohlen, weil sein Dinge kaputt macht .

Sie sind sehr nah dran, aber wenn Sie nur die Funktion selbst deklarieren, funktioniert dies nicht. Sie müssen einbinden die Funktion in etwas. In Ihrem Fall wäre dies pre_get_posts.

Beispiel (mit "Namespace" -Funktion):

<?php
// this is key!
add_action('pre_get_posts', 'wpse74620_ignore_sticky');
// the function that does the work
function wpse74620_ignore_sticky($query)
{
    // sure we're were we want to be.
    if (is_home() && $query->is_main_query())
        $query->set('ignore_sticky_posts', true);
}
5
chrisguitarguy

Für mich verhindert die Verwendung von ignore_sticky_posts, dass klebrige Posts oben angezeigt werden, aber sie werden weiterhin in chronologischer Reihenfolge mit den anderen Posts angezeigt.

Ich verwende post__not_in mit get_option('sticky_posts'), um stichhaltige Posts von der Hauptabfrage auszuschließen.

<?php
/**
 * Exclude sticky posts from home page.
 */
function theme_name_ignore_sticky_posts($query){
  if (is_home() && $query->is_main_query())
    $query->set('post__not_in', get_option('sticky_posts'));
}
add_action('pre_get_posts', 'theme_name_ignore_sticky_posts');
?>
3
Nelu