0

wordpress ウェブサイトのメイン インデックスにある特定の作成者からの投稿を表示したいとします。以下は、23 のテーマのループです。

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

<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
    <li>
        <a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link: <?php the_title(); ?>">
        <?php the_title(); ?></a>,
        <?php the_time('d M Y'); ?> in <?php the_category('&');?>
    </li>

<?php endwhile; else: ?>
    <p><?php _e('No posts by this author.'); ?></p>

<?php endif; ?>
4

1 に答える 1

1

基本的に、必要なのは $curauth を設定することだけです

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

著者ページの例: http://codex.wordpress.org/Author_Templates

<?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 if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
        <li>
            <a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link: <?php the_title(); ?>">
            <?php the_title(); ?></a>,
            <?php the_time('d M Y'); ?> in <?php the_category('&');?>
        </li>

    <?php endwhile; else: ?>
        <p><?php _e('No posts by this author.'); ?></p>

    <?php endif; ?>

<!-- End Loop -->

    </ul>
</div>
<?php get_sidebar(); ?>
<?php get_footer(); ?>

編集

私は何を説明$curauth = (isset($_GET['author_name'])) ? get_user_by('slug', $author_name) : get_userdata(intval($author));します

isset($_GET['author_name']) ?www.myexamplewebsite.com/author/danieltulp のように、ユーザー名を含むパラメーターが URL に存在するかどうかを確認します。 これは省略形の if/else ステートメントです。

URLにユーザー名がある場合、コードはそれを取得しようとしますget_user_by('slug', $author_name)

そうでない場合は、get_userdata Wordpress関数を使用して取得しようとします。get_userdata(intval($author))

もちろん、URL でユーザーを参照しているわけではないので、currentauth を次のように設定するだけで済みます。

$curauth = (is_home()) ? "liamhodnett" : (isset($_GET['author_name'])) ? get_user_by('slug', $author_name) : get_userdata(intval($author));

編集 2 他のすべてが失敗した場合 (上記のコードをテストしていないため、可能性が非常に高い)、get_posts()を使用して独自のデータベース呼び出しを行います。

$args = array(
    'author'        =>  1 // this should be your user ID, or use 'author_name' => 'liamhodnett' 
    );

// get my posts 'ASC'
$myposts = get_posts( $args );

次に、ループに $mypost 配列を使用します。

foreach ( $myposts as $post ) : setup_postdata( $post ); ?>
    <h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
    <?php the_content(); ?>
<?php endforeach; 
wp_reset_postdata();?>
于 2013-10-29T15:02:57.153 に答える