Потерять ссылку на переменную $ _post? - PullRequest
0 голосов
/ 26 марта 2010

В приведенном ниже коде эхо вверху возвращает true, но эхо внизу ничего не возвращает. Видимо, код между ними заставляет меня потерять ссылку на переменную $ _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 ]

2 голосов
/ 26 марта 2010

Переменные в PHP чувствительны к регистру. Это означает, что $_POST (предопределенная переменная ) отличается от $_post.

Если вы действительно имели в виду $_post, это ужасное имя переменной, поскольку это может запутать вещи позже.

1 голос
/ 26 марта 2010

Ваш foreach $ myrecentposts объявляет новую переменную $ post. Используйте другое имя для $ post там.

0 голосов
/ 26 марта 2010

Специальная переменная, которая содержит текущий пост, называется $post, а не $_post. Но так как это значение по умолчанию для in_category() в любом случае, вам не нужно передавать его второму параметру.

Но вам нужно добавить вызов к setup_postdata($post) внутри этой foreach петли , чтобы, ну, в общем, настроить почтовые данные. Без этого «магические» функции, такие как the_title(), будут просто возвращать данные поста для оригинального поста. Обратите внимание, что эта переменная должна называться $post.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...