web-dev-qa-db-ja.com

the_author()がループ外で動作していません

私はindex.phpに以下のコードを持っています、そしてループの上に著者の情報を表示するためにこのコード行(下記)をインクルードしたいです。

 <?php include 'author-top.php'; ?><!--author-->

ここに示すように、ヘッダーの直後に表示したいです。

<?php get_header(); ?>
<!--This is where I want my author div to display-->
<?php include 'author-top.php'; ?><!--author-->
    <div id="primary" class="content-area">

        <div id="content" class="site-content-home" role="main">                
        <?php if ( is_home() && ! is_paged() ) : ?>
            <h2 class="site-description"><?php bloginfo( 'description' ); ?></h2>
        <?php endif; ?>
        <?php if ( have_posts() ) : ?>

                  <?php /* Start the Loop */ ?>

                  <?php while ( have_posts() ) : the_post(); ?>

                <?php get_template_part( 'content', 'home' );
                ?>

            <?php endwhile; ?>

            <?php spun_content_nav( 'nav-below' ); ?>

        <?php elseif ( current_user_can( 'edit_posts' ) ) : ?>

            <?php get_template_part( 'no-results', 'index' ); ?>

        <?php endif; ?>
        </div><!-- #content .site-content -->
    </div><!-- #primary .content-area -->

これは私が得るものです: http://gyazo.com/4154248fa37c84f9cb8f52871f186723.png

私がindex.phpコードの一番下のどこかで同じ 'php include'を使おうとすると、すべてうまくいくようです。問題はそれが小さいスクリーンの上に表示されるように私が上にそれを必要とすることです。

私が悪いことは何ですか?またはそれはwordpressがそこに 'php includes'を使用することを許可していないということで、もしそうならそうではありません。

これはauthor-top.phpの中身です

<!-- get author bio **RAUL -->
<!-- This is the author info displayed at the top of each page -->
<div id="author-bio">
    <div class="author-image"><?php echo get_avatar( get_the_author_email(), '80' ); ?></div>
    <div class="author-txt">
        <h2 class="author-name" id="clickme"><?php the_author(); ?></h2>
        <p class="toggle author-description"><?php the_author_description(); ?></br>
        <a href="http://www.linkedin.com/in/raulmvicente"><img class="author-social" src="http://www.webleria.com/wp-content/themes/spun/images/linkedin_circle_color.png"></a>
        <a href="http://www.Twitter.com/raulmvicente"><img class="author-social" src="http://www.webleria.com/wp-content/themes/spun/images/Twitter_circle_color.png"></a>
        <a href="https://plus.google.com/116575236589076788314?rel=author"><img class="author-social" src="http://www.webleria.com/wp-content/themes/spun/images/google_circle_color.png"></a></p>
    </div>
</div>

<script>
    $('#clickme').click(function() { $( '.toggle' ).animate({ "height": "toggle", "opacity": "toggle" }, "slow" )});
</script>
1
Raul

私はここで私自身の質問に答えます。

ユーザー情報が表示されなかった理由は、ループの外側で使用されるときにphpタグが作成者IDを必要とするためです。

例えば次のタグ:

<?php the_author(); ?>

このようにする必要があります:

<?php the_author_meta('display_name', 1); ?>

これ はここではかなりよく説明されています。

今すぐコードが正常に動作します。

2
Raul

The Loopの外で使用する場合は、ユーザーIDを指定する必要があります。

Author-top.phpでこれを試してください

<?php get_the_author_meta( $field, $userID ); ?> 

ユーザーIDを含める必要があります。

出典 http://codex.wordpress.org/Function_Reference/get_the_author_meta

1
Brad Dalton

単一のページにいる場合は、単にpost_author ifを使用できます。 the_author_meta('display_name', $post->post_author );と書くことができます。そうすれば、idをハードコーディングする必要がなくなります。

1
mrClean