サポート » その他 » discriptionを取得したい

  • nk2525

    (@nk2525)


    metaディスクリプションを、
    投稿・個別ページでは
    ・Advanced Custom Fieldsで作った概要欄(custom_description)を取得
    ・custom_descriptionが空の場合は、本文冒頭120文字を抜粋
    それ以外では
    ・ブログ「設定」の「キャッチフレーズ」を使用
    …という動きにしたいのですが、
    投稿・個別ページではうまくいきましたが、サイトトップで「キャッチフレーズ」を取得してくれず、困っています。
    ソースは以下です。どのように修正すれば良いでしょうか…

    ↓function.php

    function auto_meta_description(){
    global $post;
    setup_postdata($post);
    if( is_single() || is_page() ): //投稿と固定ページだったら
    if (the_field('custom_description')) { //抜粋の入力があれば内容を取得
     $description = get_field('custom_description');
    }else{ //抜粋の入力が無ければ本文のテキストを120文字取得
        $description = get_the_content();
        $description = apply_filters( 'the_content', $description );
        $description = str_replace( ']]>', ']]>', $description );
        $description = wp_trim_words( $description , 120 );
    }
    else: //投稿と固定ページ以外は設定>一般のキャッチフレーズを取得
        $description = get_bloginfo ( 'description' , display );
    endif;
    echo $description ;
    }

    ↓header.php

    <?php if(is_single()) { //投稿だったら ?>
    <meta name="description" content="<?php auto_meta_description();?>" />
    <?php } elseif(is_page()) { //固定ページだったら ?>
    <meta name="description" content="<?php auto_meta_description();?>" />
    <?php } else { //その他のコンテンツ ?>
    <meta name="description" content="<?php bloginfo('description'); ?>" />
    <?php } ?>

    よろしくお願いいたします。

    • このトピックはnk2525が4ヶ月前に変更しました。
1件の返信を表示中 - 1 - 1件目 (全1件中)
  • Aki Hamano

    (@wildworks)

    @nk2525 さん

    こんにちは。
    フロントページとして、固定ページを指定されていないでしょうか。
    その場合、is_pagetrue となりますので、条件を「投稿ページまたは、固定ページかつフロントページでない」に変更する必要があります。

    is_single() || is_page()
    ↓
    is_single() || ( is_page && ! is_front_page() )

    また、コードのインデントをちゃんとつけて、制御構文を統一した方が見やすいです。
    具体的には、

    1. function.php では、波括弧を使う
    2. header.phpでは、コロン構文(:)を使う

    とした方が、一般的には良いと思います。

1件の返信を表示中 - 1 - 1件目 (全1件中)
  • このトピックに返信するにはログインが必要です。