サポート » 使い方全般 » 必要なページにだけrel="canonical"を出力したいです。

  • 解決済 rooster0364

    (@rooster0364)


    カスタムフィールドcanonicalに入力がある場合はその値をrel=”canonical”としたく、下記のように書いてみました。canonicalに入力した場合は思い通りに出力されるのですが、この書き方では値がない場合も<link rel=”canonical” href=”” />と空のタグが表示されてしまいます。

    <?php if (get_post_meta($post->ID, "canonical", true))
    {$canonical_url=get_post_meta($post->ID, 'canonical',true);}?>
    <link rel="canonical" href="<?php echo $canonical_url; ?>" />

    入力がない場合は何も出力しないようしたいのですが、どのように書けばよいでしょうか?

6件の返信を表示中 - 1 - 6件目 (全6件中)
  • if文の外にlink rel=~があるので、この一文をif文の中に移動すれば、
    値があるときだけ出力されると思います。お試しください。

    トピック投稿者 rooster0364

    (@rooster0364)

    すいません。おっしゃられている意味は分かるのですが、根本的な話で書き方がよく分かりません。
    単純に下のようにif の中にlink rel=~を入れると ‘<‘がsyntax errorとなります。

    <?php if (get_post_meta($post->ID, "canonical", true))
    {$canonical_url=get_post_meta($post->ID, 'canonical',true);}
    <link rel="canonical" href="<?php echo $canonical_url; ?>" />
    ?>

    その書き方ではif文の中に入っていません。

    <?php if (get_post_meta($post->ID, "canonical", true)) { //if文はこのカッコ
    	$canonical_url=get_post_meta($post->ID, 'canonical',true);
    	echo '<link rel="canonical" href="'.$canonical_url.'" />';
    }; //このカッコまでです ?>

    もしくは、こちらの方がわかりやすいかもしれませんね。

    <?php if (get_post_meta($post->ID, "canonical", true)) { //if文はこのカッコ
    	$canonical_url=get_post_meta($post->ID, 'canonical',true); ?>
    <link rel="canonical" href="<?php echo $canonical_url; ?>" />
    <?php }; //このカッコまでです ?>

    これでいけると思いますが・・・いかがでしょうか?

    トピック投稿者 rooster0364

    (@rooster0364)

    丁寧にありがとうございます。
    思い通りになりました。直観的には上の方が分かりやすかったです。
    <?php }; //このカッコまでです ?>
    の部分がよく分からないのですが、書き方もひとつではないんですね。
    コードとにらめっこして勉強します。

    トピック投稿者 rooster0364

    (@rooster0364)

    解決しました。ありがとうございました。

    トピック投稿者 rooster0364

    (@rooster0364)

    解決済みです!

6件の返信を表示中 - 1 - 6件目 (全6件中)
  • トピック「必要なページにだけrel="canonical"を出力したいです。」には新たに返信することはできません。