0

ユーザーがログインせずに投稿できるサイトがあり、http://wordpress.org/plugins/user-submitted-posts/というプラグインを使用しています。彼らの投稿は管理者によって投稿されたと見なされますが、送信時にフォームに名前を挿入できるため、wordpress は管理パネルに名前を表示します。

これを行うことで、名前のリストを取得できます。

<ul>
<?php
 $args= array(
  'posts_per_page' => -1
);
  query_posts($args);
?>

<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>     
<li>
    <?php echo get_the_author();  ?>
</li>   
    <?php endwhile; ?> <?php endif; ?>
</ul>

しかし、これを追加すると:

<?php echo get_the_author_posts(); ?> 

さまざまな名前のリストを取得しますが、それぞれに同じ数の投稿が表示されます。たとえば、次のようになります。

Name1 22
Name2 22
Name3 22
Name4 22

これは、これらが実際のユーザーではなく、管理者に代わって投稿しているためです。

では、登録ユーザーではなく管理パネルに表示される著者名に基づいて、各投稿へのリンクを取得するにはどうすればよいでしょうか?

4

2 に答える 2

0

作成者名は という名前のカスタム フィールド (メタ テーブル) に設定されているuser_submit_nameため、投稿を でフィルター処理すると、その作成者の投稿のみが取得され'meta_key'=>'user_submit_name'ます'meta_value'=>'John Doe'

get_the_author正しい値を返す理由は、このプラグインがメタ フィールドにフックして実際のthe_author値を返すためです。

次のように、特定の値に設定された特定のメタ フィールドを持つ投稿をクエリできます。

$my_query  = new WP_Query(array(
    'meta_key' => 'user_submit_name',
    'meta_value' => 'John Doe',
    'meta_compare' => '=' 
));

WP_Query の詳細はこちら.

そこに記載されていることを忘れないでくださいwp_reset_postdata

また、ここで説明したように、 を使用$my_query->found_postsしてカウントを取得できます。

これは必要なことを行います。

于 2013-09-13T21:36:31.757 に答える
0

ビンゴ!

     $args= array(
     'posts_per_page' => -1
    );
       query_posts($args);
    if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>       
    <li>
    
         <?php
    $args = array(
      'posts_per_page' => -1,
        'meta_key' => 'user_submit_name',
     'meta_value' => get_the_author(),
     'meta_compare' => '='
    );
    $myquery = new WP_Query($args);
    
    echo '<h3>' . $myquery->found_posts . ' proposte da ' . get_the_author() . '</h3><br>';
    
    while ( $myquery->have_posts() ) { 
        $myquery->the_post(); 
        echo '<li><a href="' . get_permalink() . '">' . get_the_title() . '</a></li>';
    }
    ?>
    
     <?php   wp_reset_postdata(); ?>
    
    </li>   
    

于 2013-09-15T12:03:07.677 に答える