WPの抜粋が機能しない場合、og:description の設定を post_content から出力

// ループ外の前提
global $post;
$excerpt = $post->post_content;
$excerpt = strip_tags($excerpt);
$excerpt = str_replace(PHP_EOL, '', $excerpt);
$excerpt = mb_substr($excerpt, 0, 120);
echo $excerpt . '...';

アイキャッチ画像の設定がない場合、 post_content の最初の画像ファイルを og:image に設定

global $post;
preg_match_all('/<img.+src=[\'"]([^\'"]+)[\'"].*>/i', $post->post_content, $matches);
$image = $matches[1][0];
if ( empty($image) ){
  $image = get_theme_file_uri('デフォルト画像パス');
}
echo $image;

ちなみに og:image は複数枚指定することができるため、必要に応じて複数指定するようにする。

複数枚指定は古い仕様だったようだ。