Цикл в боковой панели Wordpress не работает на странице поиска без результатов - PullRequest
0 голосов
/ 24 ноября 2011

Я использую оператор if elseif, чтобы проверить, какая это страница, и он требует, чтобы на странице были посты, поэтому, когда поиск возвращается с результатом 0, мой код перестает работать. Есть идеи, как лучше это кодировать?

этот код находится на моей боковой панели и показывает последние статьи, вы можете увидеть пример работы поиска здесь (боковая панель настроена как под-нижний колонтитул): http://ivry.sweetyams.ca/?s=new

и поиск не работает здесь: http://ivry.sweetyams.ca/?s=asjdfkl%3B

Код, который я использую: (Я пытался поместить материал в код else {, и он тоже не работает, потому что на странице поиска «ничего не найдено» нет постов

<?php if (have_posts()) : ?>
<?php /* IF SEARCH PAGE */  if (is_search() ) { ?>
  <?php query_posts('category_name=0&showposts=5'); ?>
  <?php while (have_posts()) : the_post(); ?>
        <a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>">
        <p> <?php the_title(); ?></p>
        </a>
  <?php endwhile;?>

<?php /* IF ESCALADE PAGE */ }elseif (is_category_or_sub(6)) { ?>
  <?php query_posts('category_name=escalade&showposts=5'); ?>
  <?php while (have_posts()) : the_post(); ?>
        <a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>">
        <p> <?php the_title(); ?></p>
        </a>
  <?php endwhile;?>

<?php /* IF MONTAGNE PAGE */ } elseif (is_category_or_sub(14)) { ?>
  <?php query_posts('category_name=montagne&showposts=5'); ?>
  <?php while (have_posts()) : the_post(); ?>
        <a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>">
        <p> <?php the_title(); ?></p>
        </a>
  <?php endwhile;?>

<?php } else { ?>
DO SOMETHING ELSE
<?php }?>
<?php endif; ?>`

Я пытаюсь получить все последние статьи для моей боковой панели, и когда поиск не приводит к результатам, он также останавливает работу моей боковой панели.

Код, который я добавил, находится не на моей странице поиска, а в моей SIDEBAR, он разделяет комментарии на 2 категории (6 и 14). Я по сути делю свой сайт, используя категории для навигации, все, что для ребенка младше 6 лет, будет стиль один и 14 другой, вы можете увидеть разницу в ссылках escalade и montagne:

Это получает каждый пост ниже эскалады, ИЛИ каждый пост ниже категории монтанья

Мой поиск извлекает результаты из ВСЕХ категорий, но если по какой-либо причине нет результата поиска, мой код боковой панели, код, который я включил, не работает.

Ответы [ 2 ]

0 голосов
/ 29 ноября 2011

Я нашел способ заставить его работать,

Я обнаружил, что рекомендуется использовать WP_Query для дополнительных постов на странице, http://new2wp.com/noob/query_posts-wp_query-differences/

также, длялюбой, кто интересуется функцией is_category_or_sub, находится здесь: http://valendesigns.com/wordpress/is-category-or-subcategory-wp-function/

Этот код проверяет, находитесь ли вы в категории или подкатегории,

<?php
$my_posts = new WP_Query(); ?>

<?php /* IF ESCALADE PAGE */ if (is_category_or_sub(6)) { ?>
    <?php $my_posts->query('posts_per_page=5&cat=6');?> 

<?php /* ELSEIF MONTAGNE PAGE */ } elseif (is_category_or_sub(14)) { ?>
    <?php $my_posts->query('posts_per_page=5&cat=14'); ?>

<?php } /* AND OTHER PAGE */ else { ?>
    <?php $my_posts->query('posts_per_page=5'); ?>
<?php }?>

<?php while ($my_posts->have_posts()) : $my_posts->the_post(); // loop for posts ?>
    <a href="<?php echo esc_url( get_permalink( $post->the_permalink ) ) ?>" title="Permanent Link to <?php echo substr($post->post_title,0,200);?>">
    <p><?php echo substr($post->post_title,0,200); ?></p>
    </a>

<?php endwhile; ?>
<?php wp_reset_query() // RESET QUERY ?>
0 голосов
/ 25 ноября 2011

первый, showposts устарел начиная с v2.1, вместо него используется posts_per_page.

секунда, после каждого query_post вам нужно сбросить запрос следующим образом:

<?php
// The Query
query_posts( $args );

// The Loop
while ( have_posts() ) : the_post();
    echo '<li>';
    the_title();
    echo '</li>';
endwhile;

// Reset Query
wp_reset_query();
?>

вот как я это понимаю. подробнее см. здесь: query_posts () , надеюсь, это поможет.

...