在下面的代码中,顶部的echo返回true,但底部的echo不返回任何内容。显然,介于两者之间的代码会导致我丢失对$ _post变量的引用?
<?php
echo "in category: ".in_category('is-sidebar'); //RETURNS TRUE
if (!get_option('my_hide_recent'))
{
$cat=get_cat_ID('top-menu');
$catHidden=get_cat_ID('hidden');
$myquery = new WP_Query();
$myquery->query(array(
'cat' => "-$cat,-$catHidden",
'post_not_in' => get_option('sticky_posts')
));
$myrecentpostscount = $myquery->found_posts;
if ($myrecentpostscount > 0)
{ ?>
<div class="menu"><h4><?php if ($my_sidebar_heading_recent !=="") { echo $my_sidebar_heading_recent; } else { echo "Recent Posts";} ?></h4><ul>
<?php
global $post;
$current_page_recent = get_post( $current_page );
$myrecentposts = get_posts(array('post_not_in' => get_option('sticky_posts'), 'cat' => "-$cat,-$catHidden",'showposts' => $my_recent_count));
foreach($myrecentposts as $idxrecent=>$post) {
if($post->ID == $current_page_recent->ID)
{
$home_menu_recent = ' class="current_page_item';
}
else
{
$home_menu_recent = ' class="page_item';
}
$myclassrecent = ($idxrecent == count($myrecentposts) - 1 ? $home_menu_recent.' last"' : $home_menu_recent.'"');
?>
<li<?php echo $myclassrecent ?>><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
<?php
} ; if (($myrecentpostscount > $my_recent_count) && $my_recent_count > -1){ ?><li><a href="<?php bloginfo('url'); ?>/site-map">View all</a></li><?php } ?></ul></div>
<?php
}
}
global $sitemap;
echo "in category: ".in_category('is-sidebar'); //RETURNS NOTHING
答案 0 :(得分:2)
PHP中的变量区分大小写。这意味着$_POST
(a predefined variable)与$_post
不同。
如果你的确意味着$_post
,那么这是一个可怕的变量名称,因为它可能会在以后混淆。
答案 1 :(得分:1)
您的foreach $ myrecentposts声明了一个新变量$ post。在那里使用不同的名称$ post。
答案 2 :(得分:0)
包含当前帖子的特殊变量名为$post
,而不是$_post
。但是因为这是in_category()
的默认值,所以你不需要传递第二个参数。
但是you need to add a call to setup_postdata($post)
inside that foreach
loop来设置发布数据。没有它,像the_title()
这样的“神奇”功能将继续返回原始帖子的帖子数据。请注意,变量必须调用$post
。