2011-07-27 141 views
0

不知道这是否是处理此问题的最佳方式,但我需要从循环中删除帖子帖子,我仍然需要在第一页上显示粘性帖子,但由于我使用无尽的列表,我不希望它显示两次。这有效,但编辑index.php文件来完成它感觉有点冒险...任何其他的想法?从循环中删除wordpress sticky帖子

//Get the current page number 
$url_args=explode('/',trim($_SERVER['REQUEST_URI'],'/')); 
$page_number=array_pop($url_args); 

$sticky=get_option('sticky_posts'); 

//if no page number, we are on the home page, so stickies are ok 
$print_it=($page_number=='')?true:(in_array(get_the_ID()*1,$sticky)?false:true); 

一个更简单的if语句改为:

if($page_number=='' || !in_array(get_the_ID(),$sticky)) $print_it=true; 
else $print_it=false; 

回答

1

首先,我会用$page_number = (get_query_var('paged')) ? get_query_var('paged') : 1确定当前的页面。

我有点困惑你的嵌套if语句(不是最容易阅读!),但我认为这个功能是有点更容易阅读和维护:

$print_it=print_it(); 

function print_it(){ 
if($page_number<=1){ 
    if (!in_array(get_the_ID(),$sticky){ 
    return true; 
    } 
return false; 
} 
} 
+0

这将在隐藏置顶文章在主页上... – Trey

+0

即使这样做,虽然真正的重点是使用'get_query_var'。这对于永久性结构变化将是灵活的,并且更易于阅读。 –