「自動挿入したい」のは、管理画面で投稿を編集しているときですか?
「挿入したユーザ名をmeta=descriptionに表示させたい」はWordPressが表示する投稿ページのHTMLソースの head 部分に
<meta name="description" content=“ユーザー名”>
を入れたいのですか?
情報不足ですみません!
あるユーザが記事を書いて公開した後です。
ユーザのlast_nameが「チョコレート」だとして、記事本文の書き出しが「沖縄のお土産で有名なのが〜〜」とした場合、記事のhead部分のHTMLには
<meta name="description" content=“チョコレート - 沖縄のお土産で有名なのが〜〜”>
という風に自動でユーザのlast_nameさ挿入せたいと思っております。
よろしくお願いします。
こんにちは、crushyogiさん。
こんな感じでいかがでしょうか?
※未検証ですので動かないかもしれませんが。
function single_mata_tag() {
global $post;
if ( !is_single() ) {
return;
}
$content = wp_trim_words( $post->post_content, '140' );
$name = get_the_author_meta( 'last_name', $post->post_author );
if ( ! empty( $name ) {
$content = $name . ' - ' . $content;
}
return sprintf( '<meta name="description" content="%s">', wp_strip_all_tags( $content ) );
}
add_action( 'wp_head', 'single_mata_tag' );
KUCKLUさん、ありがとうございます。バリエーションでこういうのも。
add_action( 'wp_head', ‘my_embed_meta_description', 90 );
function my_embed_meta_description() {
if ( is_single() ) {
global $post;
$user_obj = get_userdata( $post->post_author );
$last_name = $user_obj->last_name;
if ( empty( $last_name ) )
$last_name = $user_obj->display_name;
echo '<meta name="description" content="';
echo sanitize_text_field( $last_name );
echo ' - ';
echo wp_html_excerpt( $post->post_content, 40 );
echo '">';
}
}
KUCKLU様 gblsm様
ありがとうございます!
両コードをfunctions.phpに記述し試してみたのですが、
KUCKLU様のコードでは
if ( ! empty( $name ) {。
gblsm様のコードでは
echo '<meta name="description" content="';
にパースエラーが発生していまいます……。
朝から色々と試行錯誤しているのでうが、まだ表示にいたっておりません。
見る限りでは問題のないコードのように思えるのですが解決策はございますでしょうか?
コピー&ペースト後にダブルクォートや他の記号が全角になっていませんか?
gblsm様
全角ありました…眼鏡いりますね…。
ありがとうございます!
Twentytenにて表示させようとおもいますので、
がんばってみます!