2020バージョン。
画像の設定は下の方でまとめてやっている。
(画像パスは/img/ogp.png)
※未解決
これだとアーカイヴページのURLが出せない。
ページ数が多く無いので、今のところ個別に出し分けているが…
<meta name="description" content="<?php bloginfo('description'); ?>">
<?php
if (is_single()){
if(have_posts()): while(have_posts()): the_post();
echo '<meta property="og:type" content="article">';echo "\n";
echo '<meta property="og:description" content="'; echo mb_substr(get_the_excerpt(), 0, 100) ; echo '…">'; echo "\n";
endwhile; endif;
echo '<title>'; the_title(); echo ' | '; bloginfo('name'); echo '</title>'; echo "\n";
echo '<meta property="og:title" content="'; the_title(); echo ' | '; bloginfo('name'); echo '">'; echo "\n";
echo '<meta property="og:url" content="'; the_permalink(); echo '">';echo "\n";
}
elseif (is_page()) {
if(have_posts()): while(have_posts()): the_post();
echo '<meta property="og:type" content="website">';echo "\n";
echo '<meta property="og:description" content="'; bloginfo('description'); echo ' | '; the_title(); echo 'のページ">'; echo "\n";
endwhile; endif;
echo '<title>'; the_title(); echo ' | '; bloginfo('name'); echo '</title>'; echo "\n";
echo '<meta property="og:title" content="'; the_title(); echo ' | '; bloginfo('name'); echo '">'; echo "\n";
echo '<meta property="og:url" content="'; the_permalink(); echo '">';echo "\n";
}
elseif (is_archive()) {
echo '<meta property="og:type" content="website">';echo "\n";
echo '<meta property="og:description" content="'; bloginfo('description'); echo ' | '; the_archive_title(); echo 'のページ">'; echo "\n";
echo '<title>'; the_archive_title(); echo ' | '; bloginfo('name'); echo '</title>'; echo "\n";
echo '<meta property="og:title" content="'; the_archive_title(); echo ' | '; bloginfo('name'); echo '">'; echo "\n";
echo '<meta property="og:url" content="'; echo esc_url( home_url() ); echo '">';echo "\n";
}else{
echo '<title>'; bloginfo('name'); echo '</title>';echo "\n";
echo '<meta property="og:type" content="website">';echo "\n";
echo '<meta property="og:description" content="'; bloginfo('description'); echo '">';echo "\n";
echo '<meta property="og:title" content="'; bloginfo('name'); echo '">';echo "\n";
echo '<meta property="og:url" content="'; bloginfo('url'); echo '">';echo "\n";
}
$str = $post->post_content;
$searchPattern = '/<img.*?src=(["\'])(.+?)\1.*?>/i';
if (is_single()){
if (has_post_thumbnail()){
$image_id = get_post_thumbnail_id();
$image = wp_get_attachment_image_src( $image_id, 'full');
echo '<meta property="og:image" content="'.$image[0].'">';echo "\n";
} else if ( preg_match( $searchPattern, $str, $imgurl ) && !is_archive()) {
echo '<meta property="og:image" content="'.$imgurl[2].'">';echo "\n";
} else {
echo '<meta property="og:image" content="';echo esc_url( home_url() ); echo '/img/ogp.png">';echo "\n";
}
} else {
echo '<meta property="og:image" content="'; echo esc_url( home_url() ); echo '/img/ogp.png">';echo "\n";
}
?>
<meta property="og:site_name" content="<?php bloginfo('name'); ?>">
<meta property="fb:admins" content="======ID=====">
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:site" content="======@ID=====" />
<link rel=”canonical” href=”<?php echo esc_url( home_url() ); ?>”/>
アーカイヴページのタイトル
勝手に「タグ:」「カテゴリー:」とかが入る。
しかも最近のアプデでspanタグまで付くようになってしまったので、
functions.phpに下記を追加
<?php
add_filter( 'get_the_archive_title', function ($title) {
if ( is_archive() ) {
$title = post_type_archive_title( '', false );
} elseif ( is_category() ) {
$title = single_cat_title( '', false );
} elseif ( is_tag() ) {
$title = single_tag_title( '', false );
} elseif ( is_author() ) {
$title = get_the_author();
}
return $title;
});
?>
参考
shintaro-kawase.hatenablog.com