OGPの設定について
-
投稿者投稿
-
2014年2月24日 2:23 PM #69061horichan参加者
動作に関するご質問の場合は、下記をコピペしてご利用の環境をご記入ください。
——————————————-
WordPress のバージョン:3.8.1
Welcart のバージョン:1.3.12
ご利用のテーマ:オリジナル
症状を確認したブラウザ:
サーバー(会社名、サービス名):ロリポップ
SSLの利用: あり
WordPress のパーマリンク設定:カスタム
——————————————–
いつもお世話になっております。フェイスブックなどのOGPの設定ですが、ウェルカートのデフォルト設定を利用させていただく場合、内容の変更をフィルターフックで試みました。
add_filter(‘usces_filter_ogp_meta’ , ‘my_ogp_meta’);
function my_ogp_meta(){
global $usces, $post;
if( empty($post) || !$usces->is_item($post) || !is_single() )
return;
$item = $usces->get_item( $post->ID );
$pictid = $usces->get_mainpictid($item[‘itemCode’]);
$image_info = wp_get_attachment_image_src( $pictid, ‘full’ );
$ogs[‘app_id’] = ‘160941784091836’;
$ogs[‘title’] = $item[‘itemName’];
$ogs[‘type’] = ‘product’;
$ogs[‘description’] = strip_tags( get_the_excerpt($post->ID) );
$ogs[‘url’] = get_permalink($post->ID);
$ogs[‘image’] = $image_info[0];
$ogs[‘site_name’] = get_option(‘blogname’);
return $ogs;
}これで画像の大きさなどは変えられたのですが、fb:app_idを入れることができません。
filter.phpの
foreach( $ogs as $key => $value ){
echo “\n” . ‘<meta property=”og:’ . $key . ‘” content=”‘ . $value . ‘”>’;を参考にして頭がfb:となるように加えればいいのだと思うのですが、知識がないために断念しました。
そこでウェルカートでのOGP出力を停止し、ヘッダーへ直接コードを書くことを試しましたが、画像表示でつまづいております。つたない知識で以下のように入れてみました(画像部分のみ、その他は省略しています)
<?php
if (is_singular() && ! is_archive() && ! is_front_page() && ! is_home()){//投稿ページ、固定ページの場合
global $usces, $post;
$item = $usces->get_item( $post->ID );
$pictid = $usces->get_mainpictid($item[‘itemCode’]);
$image_info = wp_get_attachment_image_src( $pictid, ‘full’ );
if(have_posts()): while(have_posts()): the_post();
echo ‘<meta property=”og:image” content=”‘.$image_info[0].'”>’;echo “\n”;
endwhile; endif;
} else {//投稿ページ以外の場合(アーカイブページやホームなど)
echo ‘<meta property=”og:image” content=”http://example.com/wp-content/uploads/screenshot.jpg” />’;echo “\n”;
}
?>これで一応商品ページの画像OGPは正しく表示されました。
ただ、NEWSというカテゴリの投稿ページにはスクリーンショットを表示させたいのですが、空欄
となっており、デバッガーでもエラーが表示されました。
とりあえずNEWSには画像がないのでいいのですが、今後ブログなどをカテゴリに加えたときに困るのではないかと思っています。
分岐の書き方がおかしいのでしょうか。それとも「global $usces, $post;」のために一般の投稿画面には画像OGPが表示されないのでしょうか。「global $usces, $post;」の使い方、入れる場所がわかりません。
とりあえず画像表示の部分に上記のようにして入れてみましたが、og:title、og:descriptionなどの部分にも含めて「global $usces, $post;」を入れた方がいいのでしょうか。<meta・・・からのコードはググって探してきたものです。
勉強中で申し訳ございませんが、もしフィルターフックで「fb:app_id」を入れることができ、商品ページ以外でもOGPを設定できれば一番ありがたいです。
どちらかの方法でなんとか正しくOGP設定ができればと考えております。
何卒、どうぞよろしくお願い致します。2014年2月25日 4:05 PM #69076nanbuキーマスターこんにちは。
これで画像の大きさなどは変えられたのですが、fb:app_idを入れることができません。
仰る通り、fb:まで書き換えられるようにしておけば良かったですね。既にこのフィルターを使っていらっしゃる方がいるとちょっとまずいのですが、仕様を変更してfb:まで書き換えられるようにしたいと思います。ご要望リストに追加させていただきます。
2014年2月25日 7:12 PM #69081horichan参加者毎度お世話になっております。
ご返信いただきありがとうございます。設定できるといいこともあるようです。
http://cappee.net/webservice/facebook-webservice/ogp-fbadmins-fbapp-idなくても表示できないわけではないようですので、とりあえずこのままでいきます。
PHPの勉強ができていないのでいつも行き詰まってしまいます。
勉強すればもっといろいろ出来るようになるとは思うのですが、なかなか体質的に受け付けず…今後ともどうぞよろしくお願い致します。
ありがとうございました。
-
投稿者投稿
- このトピックに返信するにはログインが必要です。