丢失对$ _post变量的引用?

时间:2010-03-26 14:55:34

标签: php wordpress

在下面的代码中,顶部的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

3 个答案:

答案 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