如何使用子类别URL建立作者档案

时间:2013-11-14 作者:Oscar

所以我有一个网站,在那里我使用了作者。php页面,以便显示单个用户的配置文件页面。。然后,url看起来像:http://mydomain.com/author/test/

我想做的是拥有它,这样我就可以在其中添加每个用户通用的子页面,即:http://mydomain.com/author/test/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(); ?>

1 个回复
最合适的回答,由SO网友:Milo 整理而成

正如我在评论中提到的,您可以使用add_rewrite_endpoint 为了实现这一点。

首先,添加端点:

function wpa_author_endpoints(){
    add_rewrite_endpoint( \'liked-posts\', EP_AUTHORS );
}
add_action( \'init\', \'wpa_author_endpoints\' );
刷新重写规则后(请访问Settings > Permalinks 页面中),作者URL现在可以附加/liked-posts/.

接下来,将过滤器添加到author_template 为这些请求加载不同的模板。这将检查请求是否已设置liked-posts 查询var并加载模板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 获取所查询作者的作者数据,您可以在其他查询中使用该数据来加载作者数据。

编辑-分页不适用于终结点,因为终结点之后的任何内容都会放入终结点查询变量。因此,要获取页码,只需从查询变量中提取它:

if( strpos( $wp_query->query_vars[\'liked-posts\'] ,\'page\') !== false ) {
    echo substr( $wp_query->query_vars[\'liked-posts\'], 5 );
}

结束

相关推荐

如何编写Get_Categories_by_Year()函数?

我需要写信a function to get all the categories for a given year. 由于分类法的创建日期没有存储在数据库中,我真的不知道该怎么做。我最初的想法是获取给定年份的所有帖子,并以某种方式找到与这些帖子相关的所有类别,但我不知道如何做到这一点,这听起来非常缓慢。也许我可以写一些SQL,但我对PHP更为精通。再次回到函数,我想它应该是这样的:function get_categories_by_year($year) { // Do stuff...&#