强制特定产品类型的元数据

时间:2020-11-07 作者:Dennis

我在一个Woocommerce网站上工作,我有多种产品类型:simple\\u product、enviso\\u group\\u offer和enviso\\u group\\u ticket。所有这些类型都只是我Woocommerce中的产品。

否我只想将noindex、nofollow meta标记添加到enviso_group_ticket 产品。

<meta name=”robots” content=”noindex,nofollow”/>
我如何才能做到这一点?当我使用SEO插件Yoast时,我只能针对所有产品,而不是特定的产品类型。

目前,我已经用以下代码完成了这项工作,但我觉得这不是正确的方式:

$product_type = get_the_terms( $product_id,\'product_type\')[0]->slug;

if($product_type == "enviso_group_ticket") {
?>
    <script>
        jQuery(function ($) {
            $(\'head\').append(\'<meta name=”robots” content=”noindex,nofollow”/>\');
        })
    </script>
<?php
}
这可以用Wordpress挂钩来完成吗?还是应该采取不同的做法?我知道我可以通过手动添加每个enviso\\u group\\u票证的noindex和nofollow来实现它,但我想自动强制它。

谢谢

1 个回复
SO网友:Ivan Shatsky

您可以尝试wp_head 挂钩:

add_action( \'wp_head\', \'check_for_enviso_group_ticket\' );
function check_for_enviso_group_ticket() {
    if ( is_product() && ( \'enviso_group_ticket\' == get_the_terms( get_the_ID(), \'product_type\' )[0]->slug ) ) {
        echo \'<meta name="robots" content="noindex,nofollow"/>\', PHP_EOL;
    }
}
或者,如果WooCommerce被禁用is_product() 未定义函数:

add_action( \'wp_head\', \'check_for_enviso_group_ticket\' );
function check_for_enviso_group_ticket() {
    if ( is_singular( array( \'product\' ) ) && ( \'enviso_group_ticket\' == get_the_terms( get_the_ID(), \'product_type\' )[0]->slug ) ) {
        echo \'<meta name="robots" content="noindex,nofollow"/>\', PHP_EOL;
    }
}

相关推荐

从Yoast SEO中检索一个值,以用于设置默认的Twitter卡片图像以实现覆盖

所以Yoast SEO有一个问题,您无法定义全局默认的twitter卡图像。因此,我希望两者都设置一个默认的twitter卡图像,但允许在特定页面上的覆盖实际工作。我当前正在使用:$default_opengraph = \'https://website.com/image.png\'; function default_opengraph() { global $default_opengraph; return $default_opengraph; } ad