Wordpress - Показать предварительный просмотр всех, кроме текущего сообщения в виджете боковой панели - PullRequest
0 голосов
/ 15 августа 2010

У меня есть 4 сообщения, относящиеся к категории "новости".Я добавил этот код в single.php, чтобы показать заголовок других сообщений в той же категории на боковой панели.

<?php
    $query = "showposts=10&orderby=rand&cat=";      
    foreach((get_the_category()) as $category) { 
    $query .= $category->cat_ID .","; 
    }       
    query_posts($query);
?>
<ul class="related grid_5">
    <?php while (have_posts()) : the_post(); ?>
        <li><?php the_title() ?></li>
     <?php endwhile; ?>      
</ul>

, используя это, я могу получить все сообщения в той же категории и отобразить ихвсе 4 заголовка, принадлежащие «новостям», отображаются в виджете.но я на посте № 3, как можно показывать только заголовки № 1, № 2 и № 4 в виджете?

1 Ответ

4 голосов
/ 15 августа 2010

Если вы захватили идентификатор отображаемого в данный момент сообщения, вы можете добавить условную проверку, чтобы избежать его отображения в цикле while.

1.Получить идентификатор текущего сообщения

Я предполагаю, что вы находитесь вне цикла, поскольку находитесь на боковой панели, чтобы вы могли получить идентификатор текущего сообщения следующим образом:

global $wp_query;
$currentPost = $wp_query->post->ID;

Однако, если вы находитесь в цикле, будет работать следующее:

global $post;
$currentPost = $post->ID;

2.Пропустить печать заголовка текущего сообщения

Как только вы получите идентификатор текущего сообщения, пропустить печать довольно просто:

<ul class="related grid_5">
    <?php while (have_posts()) : the_post(); 
        if( $post->ID != $currentPost ) ?>
            <li><?php the_title() ?></li>
    <?php endwhile; ?>      
</ul>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...