web-dev-qa-db-ja.com

作者によるカスタム投稿のリストの取得

ユーザーが前のページの作成者をクリックした後に、ユーザーがすべてのカスタム投稿タイプを表示できるページを作成しようとしていますが、組み込みのPHPはWordpressで機能します。

これは簡単に照会できますか?私はそれについて多くのオンラインを見つけていません。

4
m0ngr31

このようなものでうまくいくはずです。

// 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クラス

作成者テンプレートファイルの使用

Author Templateの中でこれを行うことができます。

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テンプレートコードは Codex から恥知らずに切り取られており、おそらく最終製品ではなく開始点と見なされるべきです。

4
Pat J

あなたのauthor.phpテンプレートにあなたのカスタム投稿タイプを追加するには pre_get_posts を使ってください

Functions.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' );

これで、あなたのテンプレートファイルを変更する必要はありません:-)

2
Pieter Goosen