WordPressテーマSANGOの質問

SANGOが自動出力するmeta情報を停止したい

アバター
headcocoro

質問させていただきます。

Sangoの最新版+子テーマで利用しています。

HTMLに出力されているmetaのOGP記載を表示させたくないのですが、
下記のようなプロパティのHTML出力を停止させることは可能でしょうか?

<meta property="og:title"…
<meta property="og:description"…
<meta property="og:type"…
<meta property="og:url"…
<meta property="og:image"…
<meta name="thumbnail"…
<meta property="og:site_name"…
<meta name="twitter:card"…
<meta property="fb:app_id"…

自分で他社のプラグインを使って出力させているためと、meta用には自分専用に文言追加などカスタムした仕様でこのプロパティ要素を吐き出しているので、SANGOが標準で出力しているこれらを停止させたいと考えました。

簡単な方法があれば教えていただけると助かります。
どうぞよろしくお願いします。

【WordPress】functions.phpからhead内にタグを追加する方法
コメントへの回答
サルワカくん
サルワカくん
2020/10/17

テーマディレクトリのlibrary/functions/head.phpの中のsng_meta_ogpという関数でそのあたりのメタタグを出力しています。
これを子テーマで上書きすることになります(子テーマのfunctions.phpで関数を再宣言すればOKです)。
具体的には、以下のコードを貼り付けた後…

function sng_meta_ogp() {
    $insert = '';
    if (sng_get_meta_description()) {
      $insert = '<meta name="description" content="' . esc_attr(sng_get_meta_description()) . '" />';
    }
    $ogp_descr = sng_set_ogp_description();
    $ogp_img = sng_set_ogp_image();
    $ogp_title = sng_set_ogp_title_tag();
    $ogp_url = sng_set_ogp_url();
    $ogp_type = ( is_front_page() || is_home() ) ? 'website' : 'article';

    // 出力するOGPタグをまとめる
    $insert .= '<meta property="og:title" content="' . esc_attr($ogp_title) . '" />' . "\n";
    $insert .= '<meta property="og:description" content="' . esc_attr($ogp_descr) . '" />' . "\n";
    $insert .= '<meta property="og:type" content="' . $ogp_type . '" />' . "\n";
    $insert .= '<meta property="og:url" content="' . esc_url($ogp_url) . '" />' . "\n";
    $insert .= '<meta property="og:image" content="' . esc_url($ogp_img) . '" />' . "\n";
    $insert .= '<meta name="thumbnail" content="' . esc_url($ogp_img) . '" />' . "\n";
    $insert .= '<meta property="og:site_name" content="' . esc_attr(get_bloginfo('name')) . '" />' . "\n";
    $insert .= '<meta name="twitter:card" content="summary_large_image" />' . "\n";

    // facebookのappdid
    if (get_option('fb_app_id')) {
      $insert .= '<meta property="fb:app_id" content="' . get_option('fb_app_id') . '">';
    }

    // 出力
    if ( is_front_page() || is_home() || is_singular() || is_category() || is_author() || is_tag() ) {
      echo $insert;
    }

  } //END sng_meta_ogp

$insert .=から始まる行のうち、不要な行を削除します。

よろしくおねがいします。

アバター
headcocoro
2020/10/19

ご回答ありがとうございました。

子テーマのfunctions.phpにいただいた記述を書いてみたところ下記のエラーが表示され、前に進むことができない状況になりました。

wp-content/themes/tb20/functions.php ファイルの120行目のエラーのため、PHP コードの変更をロールバックしました。修正し、もう一度保存してください。

Uncaught Error: Call to undefined function sng_get_meta_description() in wp-content/themes/sango-child/functions.php:120
Stack trace:
#0 wp-includes/class-wp-hook.php(287): sng_meta_ogp(”)
#1 wp-includes/class-wp-hook.php(311): WP_Hook->apply_filters(NULL, Array)
#2 wp-includes/plugin.php(478): WP_Hook->do_action(Array)
#3 wp-includes/general-template.php(3006): do_action(‘wp_head’)
#4 wp-content/themes/sango-child/header.php(12): wp_head()
・・・

私が何かミスをしていないか、どうぞご確認願います。

サルワカくん
サルワカくん
2020/10/19

追加したコードをこちらに貼り付けてみていただけますか?
こちらのツールでエスケープを行った後で貼り付けていただければと思います)

アバター
headcocoro
2020/10/21

コードはコメントに記載いただいたコードをそのまま貼り付けています。
sangoテーマ内に「sng_get_meta_description」の記載が見当たりませんが、これの宣言が影響しているように感じます。

コピペしたコード↓

function sng_meta_ogp() {
$insert = ”;
if (sng_get_meta_description()) {
$insert = ”;
}
$ogp_descr = sng_set_ogp_description();
$ogp_img = sng_set_ogp_image();
$ogp_title = sng_set_ogp_title_tag();
$ogp_url = sng_set_ogp_url();
$ogp_type = ( is_front_page() || is_home() ) ? ‘website’ : ‘article’;

// 出力するOGPタグをまとめる
$insert .= ” . “\n”;
$insert .= ” . “\n”;
$insert .= ” . “\n”;
$insert .= ” . “\n”;
$insert .= ” . “\n”;
$insert .= ” . “\n”;
$insert .= ” . “\n”;
$insert .= ” . “\n”;

// facebookのappdid
if (get_option(‘fb_app_id’)) {
$insert .= ”;
}

// 出力
if ( is_front_page() || is_home() || is_singular() || is_category() || is_author() || is_tag() ) {
echo $insert;
}

} //END sng_meta_ogp

サルワカくん
サルワカくん
2020/10/22

ありがとうございます。
申し訳ないです…次回リリースバージョンの関数名を含めてしまっていました…。
お手数ですが、下記のコードも子テーマのfunctions.phpに合わせて貼り付けていただけますか?

function sng_get_meta_description() {
    global $post;
    if( is_singular() && get_post_meta($post->ID, 'sng_meta_description', true) ) {
      // 投稿ページ
      return get_post_meta($post->ID, 'sng_meta_description', true);
    } elseif( is_front_page() || is_home() ) {
      // トップページ
      if( get_option('home_description') ) return get_option('home_description');
      if( get_bloginfo('description') ) return get_bloginfo('description');
    } elseif(is_category()) {
      // カテゴリページ
      $cat_term = get_term(get_query_var('cat'), "category");
      $cat_meta = get_option($cat_term->taxonomy . '_' . $cat_term->term_id); 
      return isset($cat_meta['category_description']) ? $cat_meta['category_description'] : null;      
    } elseif ( is_tag() ) {
      return wp_strip_all_tags(term_description());
    }
    return null;
    // これ以外のページではメタデスクリプションを出力しない
    // メタデスクリプションは指定しなくても、Googleが自動で説明文を生成してくれるため
}

アップデート後もこちらの関数は残したままでOKです。
よろしくおねがいします。