Иногда разработчику WordPress могут понадобиться пользовательские циклы, которые не могут быть созданы стандартными циклами, такими как категория, автор, индекс, дата, архив, таксономия и т. Д. Одним из них являются « посты, которые я прокомментировал ». На сайтах вопросов и ответов это означает «вопросы, на которые я отвечал», поэтому это может понадобиться многим разработчикам. На основе этого урока мы можем создать другие пользовательские циклы. Давайте создадим этот раздел.
Шаг 1
 Перейдите в папку вашей темы и создайте файл myanswers.php , затем скопируйте и вставьте туда следующий код: 
| 1 2 3 4 5 6 7 8 | <?php /* Template Name: myanswers */ ?> <?php get_header(); <?php get_template_part( ‘loop’, ‘myanswers’ ); ?> <?php get_sidebar(); <?php get_footer(); | 
Мы только что создали файл шаблона под названием myanswers. Он будет использоваться для отображения нашего пользовательского цикла.
Шаг 2
Оставайтесь в папке вашей темы и создайте второй файл с именем loop-myanswers.php. И вставьте следующий код в этот файл:
| 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 | <?php if($wp_query->query_vars[‘paged’]==0){$wp_query->query_vars[‘paged’]=1;} $querystr = «     SELECT $wpdb->posts.*     FROM $wpdb->posts inner join $wpdb->comments on $wpdb->posts.ID=$wpdb->comments.comment_post_ID     WHERE $wpdb->posts.post_status=’publish’ and $wpdb->comments.user_id=».wp_get_current_user()->ID.»     GROUP BY $wpdb->posts.ID     ORDER BY $wpdb->posts.post_date DESC «; $lim_per_page=» limit «.($wp_query->query_vars[«posts_per_page»]*($wp_query->query_vars[‘paged’]-1)).»,».$wp_query->query_vars[«posts_per_page»]; $query_for_count = $wpdb->get_results($querystr, OBJECT); $wp_query->max_num_pages=ceil($wpdb->num_rows/$wp_query->query_vars[«posts_per_page»]); $querystr=$querystr.$lim_per_page; $pageposts = $wpdb->get_results($querystr, OBJECT);  ?> <?php if ($pageposts): ?>  <?php global $post;  ?>   <?php foreach ($pageposts as $post): ?>  <?php setup_postdata($post);  <?php /// THIS PART IS LOOP FROM TWENTYTEN, YOU CAN CHANGE IT HOWEVER YOU WANT BEGIN ?> <div id=»post-<?php the_ID(); ?>» <?php post_class(); <h2 class=»entry-title»><a href=»<?php the_permalink(); ?>» title=»<?php printf( esc_attr__( ‘Permalink to %s’, ‘twentyten’ ), the_title_attribute( ‘echo=0’ ) );             <div class=»entry-meta»>                 <?php twentyten_posted_on();             </div><!— .entry-meta —>     <?php if ( is_archive() || is_search() ) : // Only display excerpts for archives and search.             <div class=»entry-summary»>                 <?php the_excerpt();             </div><!— .entry-summary —>     <?php else : ?>             <div class=»entry-content»>                 <?php the_content( __( ‘Continue reading <span class=»meta-nav»>→                 <?php wp_link_pages( array( ‘before’ => ‘<div class=»page-link»>’ . __( ‘Pages:’, ‘twentyten’ ), ‘after’ => ‘</div>’ ) );             </div><!— .entry-content —>     <?php endif;             <div class=»entry-utility»>                 <?php if ( count( get_the_category() ) ) : ?>                     <span class=»cat-links»>                         <?php printf( __( ‘<span class=»%1$s»>Posted in                     <span class=»meta-sep»>|                 <?php endif;                 <?php                     $tags_list = get_the_tag_list( », ‘, ‘ );                     if ( $tags_list ):                 ?>                     <span class=»tag-links»>                         <?php printf( __( ‘<span class=»%1$s»>Tagged                     <span class=»meta-sep»>|                 <?php endif;                 <span class=»comments-link»><?php comments_popup_link( __( ‘Leave a comment’, ‘twentyten’ ), __( ‘1 Comment’, ‘twentyten’ ), __( ‘% Comments’, ‘twentyten’ ) );                 <?php edit_post_link( __( ‘Edit’, ‘twentyten’ ), ‘<span class=»meta-sep»>|             </div><!— .entry-utility —>         </div><!— #post-## —>  <?php endforeach; /// THIS PART IS LOOP FROM TWENTYTEN, YOU CAN CHANGE IT HOWEVER YOU WANT END ?>  <?php else : ?>     <h2 class=»center»>Not Found</h2>     <p class=»center»>Sorry, but you are looking for something that isn’t here.</p>     <?php include (TEMPLATEPATH . «/search.php»);  <?php endif;   <?php echo $wp_query->max_num_pages;  if ( $wp_query->max_num_pages > 1 ) : ?>                 <div id=»nav-below» class=»navigation»>                     <div class=»nav-previous»><?php next_posts_link( __( ‘<span class=»meta-nav»>←                     <div class=»nav-next»><?php previous_posts_link( __( ‘Next<span class=»meta-nav»>→                 </div><!— #nav-below —> <?php endif; | 
Этот файл предназначен для генерации нашего пользовательского цикла в файле шаблона.
Шаг 3
Откройте файл функций вашей темы (functions.php), добавьте эту функцию и примените фильтр к этому файлу:
| 01 02 03 04 05 06 07 08 09 10 11 12 13 | add_filter(‘query_vars’, ‘parameter_queryvars’ ); function parameter_queryvars( $qvars ) { /* Plugin Name: Parameter Plugin URI: http://webopius.com/ Description: A plugin to allow parameters to be passed in the URL and recognized by WordPress Author: Adam Boyse Version: 1.0 Author URI: http://www.webopius.com/ */ $qvars[] = ‘paged’; return $qvars; } | 
Эта пара функций и фильтра предназначена для получения идентификатора страницы, который необходим для построения нумерации страниц на сайтах с постоянными ссылками.
Шаг 4
Наконец, перейдите на свою панель инструментов, создайте новую страницу из Pages-> Add new и назовите ее «myanswers», по умолчанию ее слаг будет myanswers. Перед публикацией выберите шаблон для этой страницы. В виджете шаблона вы увидите выпадающий список, который содержит опцию myanswers. Выберите это.

После выбора опции myanswers нажмите кнопку «Опубликовать».
Выполнено!
Теперь вы можете использовать URL-адрес yoursite.com/myanswers в качестве страницы, которая отображает цикл сообщений, которые вы прокомментировали. И, конечно, не только вы, каждый зарегистрированный пользователь может увидеть своего.