サポート » 使い方全般 » ウェブサイト未登録のユーザーの表記に関して

  • 解決済 shiomaneki

    (@shiomaneki)


    ユーザー登録でウェブサイト登録しているユーザーの記事の下に、そのサイトへのリンクが表示され、たとえば下記のような感じで(表示は“ホームページ”)表示され、

    <a href="sample.com">ホームページ</a>

    ウェブサイト未登録のユーザーの場合は何も表示されないようにしたいので、下記のように入れてみましたがうまくいきません。

    <?php if(the_author_url != 'http://'): ?>
    <a href="<?php the_author_url(); ?>" target="_blank">ホームページ</a>
    <?php endif; ?>

    ご教示いただけませんでしょうか、よろしくお願いいたします。

6件の返信を表示中 - 1 - 6件目 (全6件中)
  • モデレーター IKEDA Yuriko

    (@lilyfan)

    <?php if(the_author_url != 'http://'): ?>

    the_author_url() は関数なのでかっこが必要です。これでは固定の文字列「the_author_url」として認識されてしまいます。また、the_author_url() はすぐに画面出力を行ってしまい、返り値はないので、この if 文は常に成立してしまいます。値を返す関数 get_author_url() を使い、かつ、中身が空でないかどうかの確認にすれば OK でしょう。

    <?php if (get_author_url()): ?>
    <div class="author"><a href="<?php the_author_url(); ?>">作成者のウェブサイト</a></div>
    <?php endif; ?>

    という感じです。

    おまけの改造もほどこしています。
    「ホームページ」という文言だけでは、分かりにくいので、「作成者の」と入れた方がいいですし、今なら「ウェブサイト」と言った方がよいでしょうし 😉 さらに、div タグで囲んだ方がよりよい HTML になると思います。
    target 属性は、XHTML 1.0 Transitional なら OK ですが、Strict では使えないので、今回は外してみました。使用しているテーマの DTD によって調整してみてください。

    <a href="sample.com">ホームページ</a>

    余談ですが、URL の例示には example.com, example.jp というドメイン名が用意されています。sample.com は実在のドメイン名ですので、あなたが所有していない限り、使用するべきではありません。
    また、これだと http:// が抜けているので正しいリンクにならないです。(sample.com というファイルへの相対リンクになる)。

    トピック投稿者 shiomaneki

    (@shiomaneki)

    lilyfanさん
    非常に丁寧な解説ありがとうございます。
    lilyfanさんが作成されたプラグインはありがたく使わせていただいています。
    さて、

    <?php if (get_author_url()): ?>

    を使うと

    Fatal error: Call to undefined function get_author_url() in ~~~

    と表示されてしまいます。

    get_author_url() という関数を調べてみたのですが見当たらなかったので、function で定義しないといけないのでしょうか。
    よろしくお願いいたします。

    使ったことがないので良く分かりませんが、以下のページは参考になりますか?
    http://ホームページ.gwalk.net/2008/05/the_author_url/
    if (get_the_author_url()) {で空判定ですかね?
    (日本語サブドメインの入ったページできれいにリンクされません・・・)

    モデレーター IKEDA Yuriko

    (@lilyfan)

    get_author_url() という関数を調べてみたのですが見当たらなかったので、

    すいません。get_the_author_url() が正解でした。たいていの WordPress テンプレートタグは、the_なんちゃら() が表示するもので、get_なんちゃら() が値を返すものです。get_the_なんちゃら() というパターンもけっこうあるんですが、うっかり get_なんちゃら() だと思って書いたのが失敗でしたね。
    wp-includes/author-template.php をみて関数の実装を確認したものの、関数名はきちんと見ていなかったという……。

    トピック投稿者 shiomaneki

    (@shiomaneki)

    shokun0803さん、

    ありがとうございます!ばっちりうまく行きました。

    <?php
        if (get_the_author_url()) { ?>
            <a href="<?php the_author_url(); ?>">投稿者のウェブサイト&raquo;</a>
    <?php
        } else {
        }
    ?>

    トピック投稿者 shiomaneki

    (@shiomaneki)

    lilyfanさん、

    get_the_author_url()
    でできました!
    ありがとうございました。

6件の返信を表示中 - 1 - 6件目 (全6件中)
  • トピック「ウェブサイト未登録のユーザーの表記に関して」には新たに返信することはできません。