私はこれで多くの問題を抱えています。スライダーにはスティッキが使用されているので、私のホームページのメインクエリから投稿を除外するために<?php query_posts( array( 'post__not_in' => get_option( 'sticky_posts' ), 'paged' => get_query_var( 'paged' ) ) ); ?>
を使用していました。私はwordpress.orgのためにこのテーマを作っています、そしてそれは推奨されないと言われました。私はそれから私のfunctions.phpにこれを追加しようとしたが無駄に:
/**
* 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 );
}
`
私が間違っていることについて何か考えはありますか?
query_posts
は を壊すのでお勧めしません 。
あなたは本当に親切ですが、関数自体を宣言するだけではうまくいきません。あなたは hook 関数を何かにする必要があります。あなたの場合、これはpre_get_posts
になります。
例( "名前空間"関数を使用)
<?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);
}
私にとっては、ignore_sticky_posts
を使用するとスティッキーな投稿が上部に表示されなくなりますが、それでも他の投稿と時系列で表示されます。
メインクエリからスティッキーポストを除外するために、get_option('sticky_posts')
とpost__not_in
を使用しています。
<?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');
?>