まだ途中だけども
OGPタグを配列で出すようなものを作ろうと思い現状のテンプレートとの兼ね合いでうんうんと
悩んでいるところ。
参考にしているところはbody_class()などなど。
カテゴリーなんかは説明文を使ってソートをかけているからその辺をどうするか。
カテゴリーの説明文を出力するようにすると単純に出した場合は数字になるし
並び替えを行うのにテンプレートファイルを触らないといけないなどの環境にはしたくはないかなぁ。
プラグインで対応はできるのだけども自分で考えてやっておきたい。
//OGPタグ用 function ogp_tags(){ $ogp = array(); $type = 'blog'; $image = 'まだ'; $no_image_file_url = '/img/ogp_no-photo.png'; $front_home = get_option('page_on_front'); if(is_front_page()){ // フロントページならば $post = get_post($post_ID); $text = get_bloginfo('description'); $title = get_the_title($post->ID); $thumbnail_id = get_post_thumbnail_id(); if(has_post_thumbnail()){ $thumbnail_array = wp_get_attachment_image_src($thumbnail_id,'ogp_thm'); $image = $thumbnail_array[0]; }else{ $image = $no_image_file_url; } }else if(is_category()){ // カテゴリーページであるかどうか $text = category_description(); $title = single_cat_title( '' , false ); }else if(is_tax()){ // タクソノミーページであるかどうか $text = term_description(); $title = single_term_title( '' , false ); }else if(is_archive()){ // アーカイブページであるか if(is_month( )){ // 月アーカイブ $text = "is_month"; }else if(is_day()){ // 日アーカイブ $text = "is_day"; }else{ // それ以外のアーカイブ $text = "is_archive"; } $title = get_the_archive_title(); }else{ //それ以外 $post = get_post($post_ID); $post_type = $post->post_type; if($post_type == "post" || $post_type == "page"){ // 投稿タイプの判断 if($post->post_excerpt){ //記事に抜粋があるかどうか $text = $post->post_excerpt; }else{ $text = $post->post_content; } }else{ $text = $post->post_content; } $title = strip_tags($post->post_title); $thumbnail_id = get_post_thumbnail_id(); if(has_post_thumbnail()){ $thumbnail_array = wp_get_attachment_image_src($thumbnail_id,'ogp_thm'); $image = $thumbnail_array[0]; }else{ $image = $no_image_file_url; } } $text = strip_tags(preg_replace('/(\s| )/','',$text)); $ogp['og:description'] = substr($text, 0, 190); $ogp['og:site_name'] = get_bloginfo('name'); $ogp['og:type'] = $type; $ogp['og:url'] = get_the_permalink(); $ogp['og:title'] = $title; $ogp['og:image'] = $image; print_r($ogp); }
したが修正版 外部から言語ファイルとってきたりしてそのままの実装には案の定ならなかった。
//OGPタグの出力 function site_ogp(){ global $cong; $ogp = array(); $type = 'website'; $image = 'まだ'; $title = ''; $site_url = home_url(); $site_descriotions = $cong['meta2']['description']; $url = (empty($_SERVER["HTTPS"]) ? "http://" : "https://") . $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"]; $template_url = get_bloginfo('template_url'); $no_image_file_url = $template_url.'/img/ogp_img.png'; $front_home = get_option('page_on_front'); if(is_front_page()){ // フロントページならば $post = get_post($post_ID); $url = (empty($_SERVER["HTTPS"]) ? "http://" : "https://") . $_SERVER["HTTP_HOST"]; $text = get_bloginfo('description'); $title = get_the_title($post->ID); $thumbnail_id = get_post_thumbnail_id(); if(has_post_thumbnail()){ $thumbnail_array = wp_get_attachment_image_src($thumbnail_id,'ogp_thm'); $image = $thumbnail_array[0]; }else{ $image = $no_image_file_url; } }else if(is_category()){ // カテゴリーページであるかどうか $text = category_description(); $title = single_cat_title( '' , false ); $text = $site_descriotions['is_category']; $image = $no_image_file_url; }else if(is_tax()){ // タクソノミーページであるかどうか $text = term_description(); $title = single_term_title( '' , false ); $text = $site_descriotions['is_tax']; $image = $no_image_file_url; }else if(is_archive()){ // アーカイブページであるか if(is_month( )){ // 月アーカイブ $text = "is_month"; }else if(is_day()){ // 日アーカイブ $text = "is_day"; }else{ // それ以外のアーカイブ $text = "is_archive"; } $title = get_the_archive_title(); $text = $site_descriotions['is_archive']; $image = $no_image_file_url; }else{ //それ以外 $post = get_post($post_ID); $post_type = $post->post_type; $post_name = $post->post_name; $url = get_the_permalink(); if($post_type == 'interview'){ // インタビューであれば $top_img = wp_get_attachment_image_src(post_custom('Top_img'),array(600,600) ); $text = post_custom('excerpt'); $title .= strip_tags(post_custom('title')); $title .= " ".strip_tags(post_custom('Company')); $image = $site_url.$top_img[0]; $url .= "?area=metro"; }else if($post_type == 'page'){ // ページであれば $text = array_key_exists($post_name,$site_descriotions) ? $site_descriotions[$post_name] : $site_descriotions['other_ss']; $title = strip_tags($post->post_title); $thumbnail_id = get_post_thumbnail_id(); if(has_post_thumbnail()){ $thumbnail_array = wp_get_attachment_image_src($thumbnail_id,'ogp_thm'); $image = $thumbnail_array[0]; }else{ $image = $no_image_file_url; } }else{ //インタビュー・ページ以外 $title = strip_tags($post->post_title); if($post->post_excerpt){ //記事に抜粋があるかどうか $text = $post->post_excerpt; }else{ $text = $post->post_content; } $thumbnail_id = get_post_thumbnail_id(); if(has_post_thumbnail()){ $thumbnail_array = wp_get_attachment_image_src($thumbnail_id,'ogp_thm'); $image = $thumbnail_array[0]; }else{ $image = $no_image_file_url; } } } //それ以外ここまで $text = strip_tags(preg_replace('/(\s| )/','',$text)); $ogp['og:site_name'] = get_bloginfo('name'); $ogp['og:type'] = $type; $ogp['og:url'] = $url; $ogp['og:title'] = $title; $ogp['og:image'] = $image; $ogp['og:description'] = mb_substr($text, 0, 95, "UTF-8"); foreach($ogp as $key => $ogp_tag){ echo '<meta property="'.$key.'" content="'.$ogp_tag.'"/>'."\n"; } }