Notice: Trying to access array offset on value of type bool in /home/tomoki0607/web-repo.com/public_html/wp/wp-content/themes/luxeritas/inc/json-ld.php on line 114

構造化データ簡易プラグイン【星レビュー用】

今回は星つき評価を表示させるための構造化データ機能を簡単に実装できるプラグインコードを作りましたので無料で配布したいと思います。

Googleの検索一覧での表示を設定するには構造化データを利用することは必須になります。

構造化データについてはググって調べて頂きたいのですが、Googleに正しく早くたくさんの情報を渡してあげるという観点では構造化データはやっておいて損はないです。
そういうSEO対策的にも有効と考えています。

 

このプラグインで実装できること

こんな感じで星のレビューを表示させることが可能です。

このメリットは目に留まるのでクリック率の上昇に期待ができるという点ですね。
ここだけオレンジ色なのはとても目立ちます。

今回はさらに料金も表示される機能もつけてあります!

 

ただ、この表示が必ずされるわけではありません。
表示されるかはGoogle様次第です。。。ご了承ください。

 

実装方法①

プラグインを作りましたのでこちらをインストールしてください。

 

 

実装方法②

以下のコードをコピペしてください

//構造化データ用メタボックス(レビュー)作成の準備
//チェックボックス作成
if ( !function_exists( 'custom_checkbox_tag' ) ):
function custom_checkbox_tag($name,$value,$label){


if ( !function_exists( 'checkbox_checked' ) )://チェックの確認
function checkbox_checked($val){
if($val == 1){//チェックされていたら
echo ' checked="checked"';
}
}
endif;
?>
<label><p><input type="checkbox" name="<?php echo $name; ?>" value="1"<?php checkbox_checked($value); ?>><?php echo $label; ?></p></label>
<?}
endif;


//ラベル表示
if ( !function_exists( 'custom_label_tag' ) ):
function custom_label_tag($name,$des){?>
<p><?php echo $des; ?></p>
<?}
endif;


//フォーム入力項目表示
if ( !function_exists( 'custom_text_tag' ) ):
function custom_text_tag($name,$value,$placeholder){
ob_start();?>
<input type="text" name="<?php echo $name; ?>" style="width: 100%;" value="<?php echo esc_attr(strip_tags($value)); ?>" placeholder="<?php echo esc_attr($placeholder); ?>">
<?
$ob_text_tag = ob_get_clean();
echo $ob_text_tag;
}
endif;


//レビュー評価ボックス表示設定
if ( !function_exists( 'custom_range_tag' ) ):
function custom_range_tag($name,$value,$min,$max,$step){//レンジ入力欄と選択した値を表示する
ob_start();?>
<div class="range-area" style="width: 100%;">
<div class="range-value" style="text-align: center;margin-right: 1%;">
<output id="<?php echo $name; ?>"><?php echo $value; ?></output>
</div>
<span class="range-min"><?php echo $min; ?></span><input type="range" name="<?php echo $name; ?>" value="<?php echo $value; ?>" min="<?php echo $min; ?>" max="<?php echo $max; ?>" step="<?php echo $step; ?>"
oninput="document.getElementById('<?php echo $name; ?>').value=this.value" style="width: calc(100% - 18px);">
<span class="range-min"><?php echo $max; ?></span>
</div>
<?
}
endif;


//howto表示
if ( !function_exists( 'custom_howto_tag' ) ):
function custom_howto_tag($des){?>
<label for="howto"><?php echo $des; ?></label>
<?}
endif;


//構造化データ用メタボックスの追加
if ( !function_exists( 'add_review_box' ) ):
function add_review_box(){
//レビューボックスの設定
add_meta_box( 'review_set', 'レビュー', 'review_box_view', 'post', 'side' );//投稿に追加
add_meta_box( 'review_set', 'レビュー', 'review_box_view', 'page', 'side' );//固定ページに追加
}
endif;
add_action('admin_menu', 'add_review_box');


//サイドの設定項目
if ( !function_exists( 'review_box_view' ) ):
function review_box_view(){


//レビュー表示切り替え
$the_review_enable = is_set_review_enable();
custom_checkbox_tag('the_review_enable' , $the_review_enable, '評価を表示する');
custom_howto_tag( 'レビュー構造化データを出力する。');


//対象名
$the_review_name = get_the_review_name();
//custom_label_tag('the_review_name', 'レビュー対象' );
custom_text_tag('the_review_name', $the_review_name, '※必須 レビュー商品名を入力');
//custom_howto_tag( 'レビュー対象名を入力。※必須');


//レート評価点
$the_review_rate = get_the_review_rate();
if (!$the_review_rate) {
$the_review_rate = 5;
}
custom_label_tag('the_review_rate', 'レビュー評価' );
custom_range_tag('the_review_rate',$the_review_rate, 0, 5, 0.1);
custom_howto_tag( '0から5の範囲で評価を入力。');


//値段
$the_review_price = get_the_review_price();
custom_label_tag('the_review_rate', '値段の入力' );
custom_text_tag('the_review_price', $the_review_price, '例:7800');
get_the_review_price();
}
endif;




add_action('save_post', 'review_custom_box_meta');
if ( !function_exists( 'review_custom_box_meta' ) ):
function review_custom_box_meta(){
$id = get_the_ID();
//有効/無効
$the_review_enable = !empty($_POST['the_review_enable']) ? 1 : 0;//空でなければ1,空なら0
$the_review_enable_key = 'the_review_enable';
add_post_meta($id, $the_review_enable_key, $the_review_enable, true);//post_metaを追加
update_post_meta($id, $the_review_enable_key, $the_review_enable);//post_metaを更新


//名前入力したか
if ( isset( $_POST['the_review_name'] ) ){
$the_review_name = $_POST['the_review_name'];
$the_review_name_key = 'the_review_name';
add_post_meta($id, $the_review_name_key, $the_review_name, true);//post_metaを追加
update_post_meta($id, $the_review_name_key, $the_review_name);//post_metaを更新
}


//レート評価入力したか
if ( isset( $_POST['the_review_rate'] ) ){
$the_review_rate = $_POST['the_review_rate'];
$the_review_rate_key = 'the_review_rate';
add_post_meta($id, $the_review_rate_key, $the_review_rate, true);//post_metaを追加
update_post_meta($id, $the_review_rate_key, $the_review_rate);//post_metaを更新
}


//値段入力したか
if ( isset( $_POST['the_review_price'] ) ){
$the_review_price = $_POST['the_review_price'];
$the_review_price_key = 'the_review_price';
add_post_meta($id, $the_review_price_key, $the_review_price, true);//post_metaを追加
update_post_meta($id, $the_review_price_key, $the_review_price);//post_metaを更新
}
}
endif;


//名前有効か
if ( !function_exists( 'get_the_review_name' ) ):
function get_the_review_name(){
return trim(get_post_meta(get_the_ID(), 'the_review_name', true));
}
endif;


//レート有効か
if ( !function_exists( 'get_the_review_rate' ) ):
function get_the_review_rate(){
$rate = get_post_meta(get_the_ID(), 'the_review_rate', true);
$rate = $rate ? $rate : '3'; //デフォルト値の設定
return $rate;
}
endif;


//レビュー有効か
if ( !function_exists( 'is_set_review_enable' ) ):
function is_set_review_enable(){
return get_post_meta(get_the_ID(), 'the_review_enable', true);
}
endif;


//ページレビュー有効か
if ( !function_exists( 'is_the_page_review_enable' ) ):
function is_the_page_review_enable(){
return is_set_review_enable() && get_the_review_name();
}
endif;


//値段有効か
if ( !function_exists( 'get_the_review_price' ) ):
function get_the_review_price(){
return trim(get_post_meta(get_the_ID(), 'the_review_price', true));
}
endif;



//headにJSON-LDタグを追加
add_action( 'wp_head', 'add_json_ld_review_to_head' );
if ( !function_exists( 'add_json_ld_review_to_head' ) ):
function add_json_ld_review_to_head() {
if (is_the_page_review_enable() && is_singular()) {
//投稿者の取得(無い場合はサイト名)
$author = get_the_author_meta('display_name');
$author = $author ? $author : get_the_author_meta('nick_name');
$author = $author ? $author : get_bloginfo( 'name' );
?>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Review",
"itemReviewed": {
"@type": "Product",
"name":"<?php echo esc_attr(get_the_review_name()); ?>",
"url":"<?php echo get_the_permalink();?>",
"review":{
"author": {
"@type": "Person",
"name": "<?php echo esc_attr(get_bloginfo( 'name' )); ?>"
}
},
"offers":{
"@type":"Offer",
"priceCurrency":"JPY",
"price":"<?php echo esc_attr(get_the_review_price()); ?>"}
},
"reviewRating": {
"@type": "Rating",
"ratingValue": "<?php echo esc_attr(get_the_review_rate()); ?>",
"bestRating": "5",
"worstRating": "0"
},
"datePublished": "<?php echo esc_attr(get_the_time('c')); ?>",
"author": {
"@type": "Person",
"name": "<?php echo esc_attr(get_bloginfo( 'name' )); ?>"
},
"publisher": {
"@type": "Organization",
"name": "<?php echo esc_attr(get_bloginfo( 'name' )); ?>"
}
}
</script>
<?php
}
}
endif;

コードの貼る場所

サイドメニューの「外観」→「テーマエディター」→「function.php」ここに貼るだけ。

 

これだけです!

確認方法

ページを開いて右クリック→ページのソースを表示で

<script type=”application/ld+json“>

という記載の場所を探してください。

 

その他要望などあれば!

ここ数ヶ月で私は当たり前だと思っていた機能や情報が意外と一般的では無かったり、ハードルが高かったりすることを実感しました。

特にブロガーさんやコードが書けない人にとっては出来ることに制限がかかってしまいますしね。

ですので、
こういう機能が欲しい!
こういうモノがあったら嬉しい!需要あるよ!

などあればTwitterのDMで送って頂きたいです。
出来るタイミングあれば作ります。(期待はしないでくださいw)

今回の構造化データの機能も追加してバージョンアップしていく予定ですので、是非お楽しみに!


以下についてお困りの方ご依頼お待ちしています

SEO対策コンサルティング

SEOの課題、改善点のアドバイスをさせていただきます。

アフィリエイト・広告運用

アフィリエイトのご依頼、web広告、sns広告の運用代行など可能です。

インフルエンサー キャスティング

インフルエンサーマーケの独自のノウハウを構築しています。
ご相談ください。

WordPressの構築・カスタマイズ

ワードプレスの完全オリジナル構築や既にあるサイトの改修が可能です。

webデザイン & web構築

webサイトデザイン設計〜コーディングまで一貫してお受けできます。

ご相談はこちら

    お名前 (必須)

    会社名

    メールアドレス (必須)

    電話番号

    題名

    メッセージ本文