<?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 というファイルへの相対リンクになる)。
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()) {
で空判定ですかね?
(日本語サブドメインの入ったページできれいにリンクされません・・・)
get_author_url() という関数を調べてみたのですが見当たらなかったので、
すいません。get_the_author_url()
が正解でした。たいていの WordPress テンプレートタグは、the_なんちゃら() が表示するもので、get_なんちゃら() が値を返すものです。get_the_なんちゃら() というパターンもけっこうあるんですが、うっかり get_なんちゃら() だと思って書いたのが失敗でしたね。
wp-includes/author-template.php をみて関数の実装を確認したものの、関数名はきちんと見ていなかったという……。
shokun0803さん、
ありがとうございます!ばっちりうまく行きました。
<?php
if (get_the_author_url()) { ?>
<a href="<?php the_author_url(); ?>">投稿者のウェブサイト»</a>
<?php
} else {
}
?>
lilyfanさん、
get_the_author_url()
でできました!
ありがとうございました。