所以Yoast SEO有一个问题,您无法定义全局默认的twitter卡图像。
因此,我希望两者都设置一个默认的twitter卡图像,但允许在特定页面上的覆盖实际工作。
我当前正在使用:
$default_opengraph = \'https://website.com/image.png\';
function default_opengraph() {
global $default_opengraph; return $default_opengraph;
}
add_filter(\'wpseo_twitter_image\',\'default_opengraph\');
这允许我全局设置默认的twitter卡图像,但问题是:
它阻止特定页面的覆盖工作(Yoast SEO自定义/特色图像)
需要手动定义任何能够帮助找到修复方法的人,YoastSEO本身都应该在插件中包含这一点,他们在WordPress论坛、github以及他们的网站上都有大量请求,他们已经请求了几年,但他们仍然没有添加它。。。
希望有人能对此提供帮助,因为它对许多用户都非常适用和有用。
谢谢
SO网友:Stefan Vetter
下面是我如何修复它的。如果将此代码粘贴到主题函数中。php,如果没有为Twitter设置图像,它将使用为Facebook设置的图像,也将为Twitter设置图像。
如果没有为Facebook和Twitter设置图像,则会返回到Yoast设置中的默认Facebook图像(遗憾的是,您无法在此处提供默认Twitter图像,因此我们将使用Facebook图像)。
// Add Twitter image to every page /article if none is defined
add_filter(\'wpseo_twitter_image\', \'change_twitter_image\');
function change_twitter_image($image) {
if (!$image) {
global $post;
if (!$image = get_post_meta($post->ID)["_yoast_wpseo_opengraph-image"][0]) {
$image = get_option("wpseo_social")["og_default_image"];
}
}
return $image;
};
SO网友:Rup
如果已经有图像集,则它是passed to the wpseo_twitter_image filter when it\'s called 作为参数:
/**
* Filter: \'wpseo_twitter_image\' - Allow changing the Twitter Card image.
*
* @api string $img Image URL string.
*/
$img = apply_filters( \'wpseo_twitter_image\', $img );
因此,您可以轻松修复过滤器,使其不会覆盖现有值,例如。
$default_opengraph = \'https://website.com/image.png\';
function default_opengraph( $img ) {
if ( is_string( $img ) && ( $img !== \'\' ) ) {
// We have a value set
return $img;
}
// No image: return the default
global $default_opengraph;
return $default_opengraph;
}
add_filter( \'wpseo_twitter_image\',\'default_opengraph\' );
然而,乍一看,有一个默认图像选项og\\u default\\u image,它被序列化为wp\\u options值wpseo\\u social。我不知道你是否/在哪里可以在管理网站上配置它。