获取按作者列出的自定义帖子列表

时间:2013-07-22 作者:m0ngr31

我正在尝试创建一个页面,用户可以在单击前一个页面中的作者后查看所有自定义帖子类型,但我在Wordpress的内置PHP函数中找不到任何东西。

这是一个容易查询的问题吗?我在网上没有找到太多关于它的信息。

2 个回复
SO网友:Pat J

像这样的方法应该会奏效:

// Assuming you\'ve got $author_id set
// and your post type is called \'your_post_type\'
$args = array(
    \'author\' => $author_id,
    \'post_type\' => \'your_post_type\',
);
$author_posts = new WP_Query( $args );
if( $author_posts->have_posts() ) {
    while( $author_posts->have_posts() ) { 
        $author_posts->the_post();
        // title, content, etc
        $author_posts->the_title();
        $author_posts->the_content();
        // you should have access to any of the tags you normally
        // can use in The Loop
    }
    wp_reset_postdata();
}
参考

WP_Query class

使用作者模板文件,可以在作者模板内执行此操作:

author.php-- 此文件属于主题的目录

<?php get_header(); ?>

<div id="content" class="narrowcolumn">

<!-- This sets the $curauth variable -->

<?php
    $curauth = (isset($_GET[\'author_name\'])) ? 
        get_user_by(\'slug\', $author_name) : 
        get_userdata(intval($author));
?>

<h2>About: <?php echo $curauth->nickname; ?></h2>
<dl>
    <dt>Website</dt>
    <dd><a href="<?php echo $curauth->user_url; ?>"><?php echo $curauth->user_url; ?></a></dd>
    <dt>Profile</dt>
    <dd><?php echo $curauth->user_description; ?></dd>
</dl>

<h2>Posts by <?php echo $curauth->nickname; ?>:</h2>

<ul>
<!-- The Loop -->
<?php

// Assuming your post type is called \'your_post_type\'
$args = array(
    \'author\' => $curauth->ID,
    \'post_type\' => \'your_post_type\',
);
$author_posts = new WP_Query( $args );
if( $author_posts->have_posts() ) {
    while( $author_posts->have_posts() ) {
        $author_posts->the_post();
        // title, content, etc
        the_title();
        the_content();
        // you should have access to any of the tags you normally
        // can use in The Loop
    }
    wp_reset_postdata();
}
?>

<!-- End Loop -->

</ul>
</div>
<?php get_sidebar(); ?>
<?php get_footer(); ?>
这个author.php 模板代码无耻地抄袭自the Codex, 而且可能应该被视为一个起点,而不是最终产品。

SO网友:Pieter Goosen

使用pre_get_posts 将自定义帖子类型添加到作者。php模板

在您的功能中。php,添加以下代码。这会将您的自定义帖子类型添加到主查询中,以便它显示在您的作者页面上

function wpse107459_add_cpt_author( $query ) {
    if ( !is_admin() && $query->is_author() && $query->is_main_query() ) {
        $query->set( \'post_type\', array(\'post\', \'YOUR_CUSTOM_POST_TYPE\' ) );
    }
}
add_action( \'pre_get_posts\', \'wpse107459_add_cpt_author\' );
这样,就无需对模板文件进行任何更改:-)

结束

相关推荐

Author Link Not Displaying

我用“echo”作为它的外部循环,我相信这篇文章的作者将其作为一个链接,但是它没有显示为链接?<h2 class=\"sidebarheaders\">Random Posts By You </h2> <br/> <?php $args = array( \'numberposts\' => 5, \'orderby\' => \'date\' ); $rand_posts = get_posts( $args );&