Как перебрать определенную категорию на single.php в Wordpress? - PullRequest
0 голосов
/ 23 апреля 2010

Я создал пользовательскую страницу, и она стала моей домашней страницей. На этой пользовательской странице я вытаскиваю последнее сообщение из определенной категории, я также создал форму разбиения на страницы, при нажатии на которую будут приняты пользователь на single.php. Мое намерение для single.php - иметь два пользовательских цикла.

Пользовательский цикл один Я хочу, чтобы файл single.php распознавал его с домашней страницы и просматривал все сообщения, отмеченные той же категорией, что и на главной странице.

Некоторые из этих сообщений должны быть помечены более чем одной категорией, поэтому цикл должен знать, что нужно игнорировать другие категории и просто обращать внимание на данную категорию. Имеет ли это смысл?

Пользовательский цикл два Если пользователь не пришел с домашней страницы, single.php будет действовать так, как обычно, то есть, если пользователь идет из index.php (в блоге), он будет переведен во второй цикл (запись в блоге)

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

Вот код ниже, чтобы показать вам, о чем я говорю

custompage.php (установлен на дом) - Это прекрасно работает, но я опубликую это только в том случае, если кто-нибудь сможет убрать его

<?php query_posts('cat=1'); ?>

<?php
$myPosts = new WP_Query();
$myPosts->query('showposts=1');

if (have_posts()) :
while ($myPosts->have_posts()) : $myPosts->the_post();
?>

<script type="text/javascript">$.backstretch("<?php $key="image"; echo get_post_meta($post->ID, $key, true);?>");</script>
<div id="post-<?php the_ID(); ?>" class="info">
      <h2><?php the_title(); ?></h2>
        <ul class="nav">
           <?php query_posts('posts_per_page=1&offset=1'); the_post(); ?>
           <li class="prev"><a href="<?php the_permalink() ?>">Previous</a></li>
            <?php wp_reset_query(); ?>
            <li class="next"></li>
        </ul>
</div>
<!-- end .info -->

<?php endwhile; endif; ?>
<?php wp_reset_query(); ?>

single.php - В настоящее время не работает

<?php if( in_category('1') ) { ?>
   <!-- start -->
   <?php if (have_posts()) : while (have_posts()) : the_post(); ?>
    <div id="post-<?php the_ID(); ?>" class="info">
    <script type="text/javascript">$.backstretch("<?php $key="image"; echo get_post_meta($post->ID, $key, true);?>");</script>
            <h2><?php the_title(); ?></h2>
            <ul class="nav">
                <li class="prev"><?php previous_post_link('%link', '&nbsp;', 'true', '1') ?></li>
                <li class="next"><?php next_post_link('%link', '&nbsp;', 'true', '1'); ?></li>
                <!--li class="prev"><?php //previous_post_link('%link', '%title;', 'true', '1') ?></li>
                <li class="next"><?php //next_post_link('%link', '%title;', 'true', '1'); ?></li-->
            </ul>
    </div>
    <!-- end .info -->
    <?php endwhile; else: ?>
    <?php endif; ?>
   <!-- end -->

<?php }else{ ?>

   <div id="content" class="widecolumn" role="main">
   <?php if (have_posts()) : while (have_posts()) : the_post(); ?>
      <div <?php post_class() ?> id="post-<?php the_ID(); ?>">
         <h2><?php the_title(); ?></h2>
         <div class="entry">
            <?php the_content('<p class="serif">Read the rest of this entry &raquo;</p>'); ?>
         </div>
      </div>
   <?php comments_template(); ?>
   <?php endwhile; else: ?>
      <p>Sorry, no posts matched your criteria.</p>
    <?php endif; ?>
   </div>

<?php } ?>

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

1 Ответ

0 голосов
/ 26 апреля 2010

как насчет этого?

HOMEPAGE
<?php
$myPosts = new WP_Query();
$myPosts->query('showposts=1&cat=1');

if (have_posts()) :
while ($myPosts->have_posts()) : $myPosts->the_post();
?>

<script type="text/javascript">$.backstretch("<?php $key="image"; echo get_post_meta($post->ID, $key, true);?>");</script>
<div id="post-<?php the_ID(); ?>" class="info">
      <h2><?php the_title(); ?></h2>
        <ul class="nav">
           <?php query_posts('posts_per_page=1&offset=1'); the_post(); ?>
           <li class="prev"><a href="<?php the_permalink() ?>">Previous</a></li>
           <?php wp_reset_query(); ?> <-- not sure if this will reset the overall query
           <li class="next"></li>
        </ul>
</div>    
<?php endwhile; endif; ?>
<?php wp_reset_query(); ?>

queryposts ('cat = 1') вверху вашего запроса не будет работать с этой категорией, категория должна быть установлена ​​внутри вашего пользовательского запроса

$myPosts->query('showposts=1&cat=1');

2-я страница (SINGLE.PHP) с 2-мя петлями. если пользователь переходит с домашней страницы на одну страницу, вы хотите прикрепить текущую категорию к запросу, без этого wordpress (в то время как на странице синглов по умолчанию будут циклически проходить все сообщения)

так что для страницы синглов было бы что-то хорошее?

<?php if( in_category('1') ) { ?>
 <!-- your selected category -->
   <!-- start -->
   <?php if (have_posts()) : while (have_posts()) : the_post(); ?>
    <div id="post-<?php the_ID(); ?>" class="info">
    <script type="text/javascript">$.backstretch("<?php $key="image"; echo get_post_meta($post->ID, $key, true);?>");</script>
            <h2><?php the_title(); ?></h2>
            <ul>
             <php global $post;
              $my_query = get_posts('numberposts=1&cat=1&offset=-1');
              foreach($my_query as $post) :
          setup_postdata($post);
          $link = get_post_meta($post->ID, 'site-url', true); ?>
     <li>
                <a href="<php echo $link; ?>"><php the_title(); ?></a>
             </li>
            <php endforeach; ?>
            <php global $post;
              $my_other_query = get_posts('numberposts=1&cat=1&offset=1');
              foreach($my_other_query as $post) :
          setup_postdata($post);
          $link = get_post_meta($post->ID, 'site-url', true); ?>
     <li>
                <a href="<php echo $link; ?>"><php the_title(); ?></a>
             </li>
            <php endforeach; ?>
           </ul>

    </div>
    <!-- end .info -->
    <?php endwhile; else: ?>
    <?php endif; ?>
   <!-- end -->

<?php }else{ 
    include('standard-wp-singles-page-stuff.php');
} ?>

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

надеюсь, что это помогает ..

исправление компоновки кода .. не сработало: P

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