だから私は私が個々のユーザーのプロフィールページを表示することができるようにauthors.phpページを使用したサイトを持っています.. URLはそれから以下のようになります: http://mydomain.com/author/test/
私がやりたいのは、各ユーザーに共通のサブページをこれに追加できるようにすることです。つまり、 http://mydomain.com/author/test/liked-posts/ ここで、私はすべてを追加できます。ユーザーが気に入った投稿ie:liked-posts.php
私は特定のファイルにリダイレクトされるようにこの構造のURLを言っているべき場所はありますか?そしてどのように私はそれをするのだろうか?
これは私が私の投稿を問い合わせるのに使っている完全なコードです:
<?php
/**
* Template Name: Posts liked by Author
*
* for a child theme of Twenty_Twelve
*/
get_header(); ?>
<div id="primary" class="site-content">
<div id="content" role="main">
<?php
$author = get_user_by( 'slug', get_query_var( 'author_name' ) );
$post_ids = $wpdb->get_col( "SELECT DISTINCT post_id FROM {$wpdb->prefix}wti_like_post WHERE user_id = {$author->ID}" );
if( strpos( $wp_query->query_vars['liked-posts'] ,'page') !== false ) {
$paged = substr( $wp_query->query_vars['liked-posts'], 5 );
}
$args = array(
'posts_per_page' => 4,
'paged' => $paged,
'order' => 'ASC',
'post__in' => $post_ids
);
$wp_query = new WP_Query();
$wp_query->query( $args ); ? >
<?php if( have_posts() ) : ?>
<?php while ($wp_query->have_posts()) : $wp_query->the_post(); ?>
<?php get_template_part( 'content', get_post_format() ); ?>
<?php comments_template( '', true ); ?>
<?php endwhile; // end of the loop. ?>
<?php twentytwelve_content_nav( 'nav-below' ); ?>
<?php else : ?>
<article id="post-0" class="post no-results not-found">
<header class="entry-header">
<h1 class="entry-title"><?php _e( 'Nothing Found', 'twentytwelve' ); ?></h1>
</header>
<div class="entry-content">
<p><?php _e( 'Apologies, but no results were found. Perhaps searching will help find a related post.', 'twentytwelve' ); ?></p>
<?php get_search_form(); ?>
</div><!-- .entry-content -->
</article><!-- #post-0 -->
<?php endif; wp_reset_postdata(); ?>
</div><!-- #content -->
</div><!-- #primary -->
<?php get_sidebar(); ?>
<?php get_footer(); ?>
私が私のコメントで述べたように、あなたはこれを達成するために add_rewrite_endpoint
を使うことができます。
まず、エンドポイントを追加します。
function wpa_author_endpoints(){
add_rewrite_endpoint( 'liked-posts', EP_AUTHORS );
}
add_action( 'init', 'wpa_author_endpoints' );
書き換えルールをフラッシュした後(adminのあなたのSettings > Permalinks
ページにアクセスしてください)、著者のURLに/liked-posts/
を追加することができます。
次に、author_template
にフィルタを追加して、これらの要求に対して異なるテンプレートをロードします。これはリクエストがliked-posts
クエリ変数を設定したかどうかをチェックし、もしあればテンプレートliked-posts.php
をロードします。
function wpa_author_template( $template = '' ){
global $wp_query;
if( array_key_exists( 'liked-posts', $wp_query->query_vars ) )
$template = locate_template( array( 'liked-posts.php', $template ), false );
return $template;
}
add_filter( 'author_template', 'wpa_author_template' );
そのテンプレート内で、 get_queried_object
を使用して、照会された著者の著者データを取得できます。これを追加のクエリで使用して、著者データを読み込むことができます。
編集 - ページ付けはエンドポイントでは機能しません。なぜなら、エンドポイントの後にあるものはすべてエンドポイントクエリvarに入れられるからです。そのため、ページ番号を取得するには、クエリvarから抽出するだけです。
if( strpos( $wp_query->query_vars['liked-posts'] ,'page') !== false ) {
echo substr( $wp_query->query_vars['liked-posts'], 5 );
}