Функция next_post_link () выдает тот же URL поста в wordpress - PullRequest
0 голосов
/ 06 апреля 2011

Когда я пишу код ниже для последних сообщений, а затем после того, как я пишу код для следующей и предыдущей ссылки, эта функция выдаст мне ту же ссылку сообщения.Если я закомментирую " $ tags = wp_get_post_tags ($ post-> ID); ", то в этой строке будет напечатана ссылка на следующий пост.Как я могу решить эту ошибку?пожалуйста, помогите мне.

                <?php
                    //for use in the loop, list 5 post titles related to first tag on current post

                    $tags = wp_get_post_tags($post->ID);
                    if ($tags) {
                      echo '<div class="articlecontent font16 bold fontgray">Related Posts</div>';
                      $first_tag = $tags[0]->term_id;
                      $args=array(
                        'tag__in' => array($first_tag),
                        'post__not_in' => array($post->ID),
                        'showposts'=>5,
                        'caller_get_posts'=>1
                       );
                      $my_query = new WP_Query($args);
                      if( $my_query->have_posts() ) {
                        echo '<div class="articlecontent"><ul>';
                        while ($my_query->have_posts()) : $my_query->the_post(); ?>
                          <li><a href="<?php the_permalink() ?>" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a></li>
                          <?php
                        endwhile;
                        echo "</ul></div>";
                      }
                    }
                ?>   

                <div class="nextprevbar">
                    <div class="prevtopic"><?php

                        previous_post_link( '%link', '<img border="0" alt="" src="'.get_template_directory_uri().'/images/prev-bullet.gif">' . _x( '&nbsp;', 'Previous post link', 'twentyten' ) . ' %title' ); ?></div>
                    <div class="nexttopic"><?php next_post_link( '%link', '%title &nbsp;<img border="0" alt="" src="'.get_template_directory_uri().'/images/next-bullet.gif">' . _x( '&nbsp;', 'Next post link', 'twentyten' ) . '</span>' ); ?></div>
                </div>

1 Ответ

2 голосов
/ 06 апреля 2011

Проблема должна быть в переменной $post.Перед выполнением этой строки:

 while ($my_query->have_posts()) : $my_query->the_post(); ?>

переменная $post содержит данные текущей записи (я полагаю, этот код находится внутри single.php?).Но после этой строки и внутри цикла, $post var содержит ваши последние последние сообщения, одну за другой (вы устанавливаете переменную $post при вызове the_post()).

После этого цикла (ниже endwhile), $post будет содержать данные последнего сообщения, полученного в этом цикле.

previous_post_link() и next_post_link() необходимо получить доступ к $post для ссылки на текущее сообщение, ноони берут в качестве ссылки последнее сообщение о ваших последних сообщениях, а не сообщение, читаемое вашим пользователем.

Я не знаю, какова html-структура этой страницы, но я бы добавил последние сообщениясписок ПОСЛЕ навигационных ссылок (далее, предыдущие сообщения).Это решит проблему, если я прав, и, по моему мнению, это будет семантически понятнее.

Или вы также можете попробовать это:

Добавьте эту строку:

$currentPost = clone $post;

До:

$my_query = new WP_Query($args);

И добавьте эту строку:

<?php $post = $currentPost; ?>

Перед вызовом функций ссылок следующего и предыдущего поста.

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