如何在wp_Query中首先显示粘帖?

时间:2013-05-03 作者:İlkay Çay

我已经找了很长时间了,但我找不到解决办法。我不是编码员。请帮帮我。这是我的wp\\U查询代码;

$my_query = new WP_Query(\'category_name=animals&showposts=10\');
while ($my_query->have_posts()) : 
    $my_query->the_post();
    $do_not_duplicate = $post->ID; ?> 
    <li><a href="<?php the_permalink()?>"><?php the_title(); ?></a></li><?php 
endwhile; ?> 

2 个回复
SO网友:s_ha_dum

现在还不完全清楚您想做什么,但粘性帖子应该在顶部,也就是显示的第一个帖子,除非您已经努力防止这样做。这是默认设置。我刚刚用您的查询对此进行了测试,只将类别ID更改为我的服务器上存在的内容。

为了防止这种棘手的后期处理(即导致相反的行为),可以将参数传递给WP_Query 例如:

$my_query = new WP_Query(\'category_name=animals&showposts=10&ignore_sticky_posts=true\');
或在查询运行之前设置值,使用:

$my_query->set(\'ignore_sticky_posts\',true); // $my_query could be any instantiated WP_Query variable.
也许可以搜索你的主题和插件ignore_sticky_posts 并查看查询是否有问题。

您还可以尝试强制粘性帖子与以下内容交互:

function force_sticky_wpse_98187($qry) {
  $qry->set(\'ignore_sticky_posts\',false);
}
add_action(\'pre_get_posts\',\'force_sticky_wpse_98187\',1000);
这会添加一个具有任意高优先级的过滤器,以便它可以合理地作为钩子上的最后一个操作运行。我不知道它是否有效。它完全没有经过测试。这也会改变(如果可行的话)所有查询,这可能太激进了。您可能希望添加其他条件以限制其运行。

SO网友:Balas
$category = get_cat_ID(\'animals\');

// The Query

$args = array(\'post__in\' => get_option( \'sticky_posts\' ),
\'ignore_sticky_posts\' => 1, \'order\' => \'ASC\' , \'cat\' => $category);
query_posts( $args );

// The Loop
while ( have_posts() ) : the_post();
?>
    <div id="sticky_title"><h1><?php the_title();?></h1></div>
    <div id="sticky_excerpt"><p><?php the_excerpt(); ?></p></div>
<?php

endwhile;

// Reset Query

wp_reset_query();
结束

相关推荐

New loop vs widget

所以,我有一个侧边栏,我将列出所有帖子,我可以使用一个小部件。但是,使用一个新的循环而不是一个小部件或优先选择是否合适?