2010-08-23 3 views
0

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

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

+0

Любые обновления? Я рассмотрел возможность ввода всего кода цикла в функцию и затем вызвал это после каждого query_posts, но как заставить их появляться на странице случайно, а не в том порядке, в котором я их написал. – Cameron

ответ

1

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

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

<?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 запросов для отображения пяти сообщений. Чтобы использовать один запрос для отображения пяти сообщений и сортировки случайным образом, как вы хотите, отредактируйте каждый из пяти сообщений и назначьте их в новую категорию, скажем: «author sampler». Затем в файле шаблона:

<?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;?> 
+0

Я не хочу использовать категории для авторов. Я пошел на использование функции для кода, а затем просто вызвал это для каждого вызова query_posts. Проблема состоит в том, чтобы заставить их отображать случайным образом (использование order_by = rand будет работать только для самого самого запроса, а не для порядка всех запросов на странице) – Cameron

Смежные вопросы