WordPress Rewind Посты - PullRequest
       6

WordPress Rewind Посты

0 голосов
/ 24 августа 2010

У меня есть следующий код: http://pastebin.com/ng99augD

Он в основном выплевывает пять постов для пяти авторов, указанных в постах запросов в каждом фрагменте кода, а затем перематывает посты перед следующим запросом. Это далеко от идеала и хотелось бы сделать код более эффективным, не повторяя весь код шаблона для постов снова и снова. Я также хочу, чтобы они были в случайном порядке, а не выходили в том порядке, в котором они были написаны, поскольку я не хочу, чтобы какой-либо конкретный автор был наверху. Спасибо.

1 Ответ

1 голос
/ 24 августа 2010

Я не уверен, почему необходимо использовать rewind_posts(). Вы создаете новый запрос, используя каждый раз query_posts(). rewind_posts() перематывает запрос на повторное использование.

Если ваша производительность не пострадает, возможно, будет хорошо выполнить 5 запросов, чтобы получить ваших пяти авторов. Чтобы не переписывать один и тот же код шаблона каждый раз, у вас есть как минимум два варианта. Создайте php-файл с кодом шаблона и включайте его каждый раз, когда вам это нужно:

<?php include('author_posts.php');?>

Или, что еще лучше, создайте функцию в вашем functions.php или в файле плагина, которая будет принимать результаты вашего запроса и выводить шаблон.

<?php $posts = query_posts('posts_per_page=1&author=author1');
    if(function_exists('my_authors')){my_authors($posts);}
?>

Затем в вашем functions.php или плагине:

function my_authors($posts){
    //template code here, using $posts->ID, $posts->post_content, etc
}

Третий вариант, который очищает ваш код и количество запросов , заключается в использовании категории для отображения сообщений, назначенных ей здесь. Вы делаете 5 запросов для отображения пяти сообщений. Чтобы использовать один запрос для отображения пяти сообщений и случайной сортировки, как вы хотите, отредактируйте каждое из пяти сообщений и назначьте их в новую категорию, скажем: «автор сэмплера». Тогда в вашем файле шаблона:

<?php $posts = get_posts('category=author sampler'&order_by=rand&order=asc');
    foreach($posts as $post):?>
      <?php setup_postdata($post);
           //your posted template code follows:
       ?>
      <article id="post-<?php the_ID(); ?>">
          <h2><a href="<?php the_permalink() ?>" rel="bookmark" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a><?php edit_post_link('Edit', ' (', ')'); ?></h2>
          <p class="p-cat">In: <?php the_category('|') ?></p>
          <p class="p-author">
              <span class="name">
                  <?php the_author_posts_link(); ?></span> <span class="avatar"><?php echo get_avatar( $email, $size = '32' ); ?>
               </span>
          </p>

          <?php //etc ?>

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