如何使用 Yoast 将第二个开放图谱图像添加到站点?

我想向我的 Wordpress 站点添加第二个开放图形图像(方形)以供 WhatsApp 使用。WhatsApp 选择最后一张图像并将其裁剪为 1 x 1.3 的纵向纵横比,然后以 80 x 104 像素显示,这不适用于第一个打开的图形图像,其尺寸为 1.91 比 1 横向纵横比对于 Facebook(和 LinkedIn)。


通过 Yoast SEO 插件,我添加了一个 1200 x 630 的图像,供 Facebook 和 LinkedIn 等网站使用(并且该图像显示了一组完整的 og 元标记)。该图像还用于消息传递应用程序的链接预览。我已经使用社交 - Yoast SEO 下的 Facebook 选项卡添加了图像。


我找不到任何函数来使用 Yoast 定义第二个开放图形图像。


我确实尝试从几年前的教程中添加一些代码到functions.php,但它所做的只是用指向一个图像的链接替换现有的og数据:


add_action( 'wpseo_opengraph', 'change_yoast_seo_og_meta' );

/**

* Function to add hooks and filter out the Yoast SEO Open Graph Meta Tags

*/


function change_yoast_seo_og_meta() {

  add_action( 'wpseo_add_opengraph_images', 'add_images' );

}


function add_images( $object ) {

  $image = 'http://url_to_our_image.png';


  $object->add_image( $image );

}

我不认为 Yoast 直接支持第二张图片,但是有没有办法使用 functions.php 添加第二张图片(使用 op:image、og:image:secure_url、og:image:height、og:image:width , 和 og:image:alt 元字段)?我不需要以编程方式完成图像数据,因为我会为每个页面使用相同的图像,因此可以将信息硬编码到functions.php 中。


紫衣仙女
浏览 192回答 2
2回答

幕布斯7119047

是的,这是可能的。默认情况下,Yoast 会用您使用wpseo_add_opengraph_images钩子添加的图像覆盖默认图像。因此,您可以从WPSEO_Options类中获取默认图像并首先添加它,然后添加您的次要图像。add_action( 'wpseo_add_opengraph_images', 'add_images' );function add_images( $object ) {    $default_image_url = WPSEO_Options::get('og_default_image', '');    if( $default_image_url !== '' ) {    $default_image = array( 'url' => $default_image_url, 'height' => 100, 'width' => 200 );    $object->add_image( $default_image );  }  $secondary_image = array( 'url' => 'https://exampledomain.com/images/secondary-image.jpg', 'height' => 100, 'width' => 200 );  $object->add_image( $secondary_image );}谢谢。

阿晨1998

正如 Juan Solano 在他的评论中指出的那样,Yoast 已经贬低了以前用于添加内容的过滤器(例如第二个 OG 图像),并修改了它们的架构以在版本 14 中使用 Abstract_Indexable_Presenter 类。我已经修改了 gjzim 的代码,用于根据 Polylang 如何更改其代码以与 Yoast 的更新一起使用来添加第二个 OG 图像:// Add a second OG image (a square one for WhatsApp)use Yoast\WP\SEO\Presenters\Abstract_Indexable_Presenter;class Second_OG_Image_Presenter extends Abstract_Indexable_Presenter {&nbsp; &nbsp; public function present() {&nbsp; &nbsp; &nbsp; &nbsp; $images = $this->get();&nbsp; &nbsp; &nbsp; &nbsp; if ( empty( $images ) ) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return '';&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; $return = '';&nbsp; &nbsp; &nbsp; &nbsp; $return .= '<meta property="og:image" content="' . esc_url( $images['url'] ) . '" />';&nbsp; &nbsp; &nbsp; &nbsp; $return .= \PHP_EOL . "\t" . '<meta property="og:image:width" content="' . $images['width'] . '"/>';&nbsp; &nbsp; &nbsp; &nbsp; $return .= \PHP_EOL . "\t" . '<meta property="og:image:height" content="' . $images['height'] . '"/>';&nbsp; &nbsp; &nbsp; &nbsp; return $return;&nbsp; &nbsp; }&nbsp; &nbsp; public function get() {&nbsp; &nbsp; &nbsp; &nbsp; $images = ['width' => 400,&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;'height' => 400,&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;'url' => esc_url('https://example.com/wp-content/uploads/2019/08/Open-Graph-Sq.png')&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ];&nbsp; &nbsp; &nbsp; &nbsp; return $images;&nbsp; &nbsp; }}function add_second_og_image( $presenters ) {&nbsp; &nbsp; $_presenters = array();&nbsp; &nbsp; foreach ( $presenters as $presenter ) {&nbsp; &nbsp; &nbsp; &nbsp; $_presenters[] = $presenter;&nbsp; &nbsp; &nbsp; &nbsp; if ( $presenter instanceof Yoast\WP\SEO\Presenters\Open_Graph\Image_Presenter ) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $_presenters[] = new Second_OG_Image_Presenter();&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; }&nbsp; &nbsp; return $_presenters;}add_filter( 'wpseo_frontend_presenters', 'add_second_og_image' );`
打开App,查看更多内容
随时随地看视频慕课网APP