web-dev-qa-db-ja.com

the_author_meta( 'user_url'、$ author-> ID)が正しく機能していません。どうすればこれを解決できますか?

私のブログには2人の作成者と1人の管理者がいます。私は私のcontributors.phpで以下のコードを使っています

function contributors() {
        global $wpdb;

        $authors = $wpdb->get_results("SELECT ID, user_nicename from $wpdb->users ORDER BY display_name");

        foreach($authors as $author) {

        echo the_author_image($author->ID);

        echo the_author_meta('display_name', $author->ID) . '</br>' ;
        echo the_author_meta('user_url', $author->ID) . '</br>';
        echo the_author_meta('description', $author->ID) . '</br>' ;
        echo the_author_meta('user_email', $author->ID) . '</br></br>' ;

        }
        }

        contributors();

それはすべての作者と管理者の写真、名前、説明と電子メールを完全に印刷しています。

しかし、それはユーザーリンクを正しく印刷しません。

  • 管理者またはユーザーID 1の場合、ブログのURLが表示されます。
  • 1人目の作成者またはユーザーID 2の場合、正しいURLが出力されます。
  • 2人目の作者またはユーザーID 3の場合、何も表示されません。

何が問題ですか?どうすればこれを解決できますか?

1
Riffaz Starr

データベースのユーザーのURLを確認しましたか。たぶんそれは彼らが登録のために使ったものです。

このシナリオはどうですか -

  • Adminの場合、urlのデフォルト値はブログのURLです。
  • 登録時にユーザーID 2がURLを使用しました。
  • ユーザーID 3は、登録時にURLフィールドをブランクのままにしました。

あなたはまずデータベースから彼らのURLをチェックするべきです。それはwp_usersテーブルにあります(私はあなたがテーブル接頭辞wp_を使ったと仮定しています)。

編集:

the_author_posts_link()the_author_meta('user_url',$userID)は異なる機能を持っています。

the_author_posts_link() displayは作者によるすべての投稿へのリンクを表示します。

the_author_meta('user_url',$userID)はホームページのURLを表示します。

したがって、これらは2つの異なることです。私はあなたの最善の策はあなたがthe_author_meta('user_url', $userID)の代わりにあなたが達成しようとしているものを得るために以下を使うことであると思います。 the_author_posts_linkは引数を取らず、 The Loop の内側で使用する必要があるため、使用することもできません。

<a href="<?php echo get_author_posts_url( $author->ID ); ?>"><?php the_author_meta( 'display_name', $author->ID ); ?></a>
2
sakibmoon