• 解決済 heppoko

    (@heppoko)


    投稿記事において、description用に設定したカスタムフィールドに入力があればそれを出力して、入力がなければ記事の先頭のテキストを出力したいと思いました。

    
    <?php if ( post_custom( 'kiji-des' ) ): ?>
      <meta name="description" content="<?php echo post_custom( 'kiji-des' ); ?>">
    <?php else:?>
      <meta name="description" content="<?php the_excerpt(); ?> ...">
    <?php endif; ?>
    

    これを「header.php」に書きました。

    カスタムフィールドの値は出力されました。
    しかし入力がない時に先頭のテキストを抜粋して出力をしてくれませんでした。

    まさかと思って、管理画面にある「抜粋」の項目に入力をしていれば出力はされました。

    「the_excerpt()」はこういう使い方では出力は出来ないのでしょうか?
    もしくは可能なのであれば、その手段を教えていただければ幸いです。

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

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • the_excerptはループ内でしか使えません。

    参考
    WordPress:excerptをループ外で取得。文字数指定も
    https://little.ws/201302/556.html

    こんにちは、

    「header.phpに直接書きたい」という事なら

    
    <?php 
    if ( is_singular() ) {//必要なのは、個別投稿の場合だけですよね?
    
    	$post_id	= get_the_ID();//IDを取得
    	$post		= get_post( $post_id );//そのIDの投稿を取得
            //投稿の本文から、抜粋文を自前で作成
    	$excerpt_text	= wp_html_excerpt( $post->post_content, 240, '...' );
            //タグに、抜粋文を挿入
    	printf( '<meta name="description" content="%1$s" class="test">', esc_attr( $excerpt_text ) );
    }
    ?>
    

    でも、出来るかも 

    抜粋文は、関数を使う場合でも、上記のケースでも esc_attr()で処理したほうがいいです。

    投稿本文に、ダブルクウォートが含まれている場合、タグが破壊されます。

    • この返信は6年、 10ヶ月前にnobitaが編集しました。
    • この返信は6年、 10ヶ月前にnobitaが編集しました。
    トピック投稿者 heppoko

    (@heppoko)

    manbo様

    ご回答ありがとうございました。
    お礼が遅くなってしまってすみません。

    提示していただいたものをあれこれ試したのですがうちではダメでした。
    でも「the_excerpt」はループ内でしか使えないと言うことが改めてはっきりと分かりました。
    重ね重ねありがとうございました。

    nobita様

    ご回答ありがとうございました。
    お礼が遅くなってしまってすみません。

    ご提示いただいたものでうまく抜粋表示させることが出来ました。
    文字数の指定までできたので、さらに助かりましたです。
    しかも「esc_attr()」のことは勉強になりました。
    重ね重ねありがとうございました。

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • トピック「the_excerptが出力されない」には新たに返信することはできません。