有时,WordPress 开发人员可能需要自定义循环,这些循环无法使用标准循环(如类别、作者、索引、日期、存档、分类法等)生成。其中之一是“我评论的帖子” >”。在问答网站中,它的意思是“我回答的问题”,因此许多开发人员可能需要它。在本教程的基础上,我们可以创建另一个自定义循环。让我们来创建这个部分。
步骤 1
转到您的主题文件夹并创建一个 myanswers.php
文件,然后将以下代码复制并粘贴到其中:
<?php /* Template Name: myanswers */ ?>
<?php
get_header(); ?>
<?php
get_template_part( 'loop', 'myanswers' );
?>
<?php get_sidebar(); ?>
<?php get_footer(); ?>
我们刚刚创建了名为 myanswers 的模板文件。它将用于显示我们的自定义循环。
步骤 2
留在您的主题文件夹中并创建名为loop-myanswers.php 的第二个文件。并将以下代码粘贴到该文件中:
'
<?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' ) ); ?>" rel="bookmark"><?php the_title(); ?></a></h2>
<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">→</span>', 'twentyten' ) ); ?>
<?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> %2$s', 'twentyten' ), 'entry-utility-prep entry-utility-prep-cat-links', get_the_category_list( ', ' ) ); ?>
</span>
<span class="meta-sep">|</span>
<?php endif; ?>
<?php
$tags_list = get_the_tag_list( '', ', ' );
if ( $tags_list ):
?>
<span class="tag-links">
<?php printf( __( '<span class="%1$s">Tagged</span> %2$s', 'twentyten' ), 'entry-utility-prep entry-utility-prep-tag-links', $tags_list ); ?>
</span>
<span class="meta-sep">|</span>
<?php endif; ?>
<span class="comments-link"><?php comments_popup_link( __( 'Leave a comment', 'twentyten' ), __( '1 Comment', 'twentyten' ), __( '% Comments', 'twentyten' ) ); ?></span>
<?php edit_post_link( __( 'Edit', 'twentyten' ), '<span class="meta-sep">|</span> <span class="edit-link">', '</span>' ); ?>
</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">←</span> Previous', 'twentyten' ) ); ?></div>
<div class="nav-next"><?php previous_posts_link( __( 'Next<span class="meta-nav">→</span>', 'twentyten' ) ); ?></div>
</div><!-- #nav-below -->
<?php endif; ?>
此文件用于在模板文件中生成我们的自定义循环。
步骤 3
打开主题的主题函数文件(functions.php)并将此函数和过滤器添加到该文件:
'
add_filter('query_vars', 'parameter_queryvars' );
function parameter_queryvars( $qvars )
{
/* Plugin Name: Parameter
Plugin URI: https://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;
}
这对函数和过滤器用于获取在永久链接结构站点中构建分页所需的页面 ID。
步骤 4
最后,转到您的仪表板,从页面创建新页面->添加新页面并将其命名为“myanswers”,默认情况下其slug将为myanswers。在发布之前选择此页面的模板。在模板小部件中,您将看到包含 myanswers 选项的组合框。选择它。
选择 myanswers 选项后,单击“发布”按钮。
完成!
现在您可以使用 yoursite.com/myanswers url 作为显示“您评论的帖子”循环的页面。当然,不仅是您,每个登录用户都可以看到自己的。