检查页面是否为WooCommerce属性

时间:2019-04-04 作者:TimothyKA

我正在试图找出如何自定义属性页(例如,如果我单击指向“长度”属性的链接,而该属性的词条为“7英寸”,wordpress将回显所有具有长度属性的产品的词条7。我的问题是,如何自定义这样的页?

希望这是清楚的。

谢谢

3 个回复
最合适的回答,由SO网友:Christos Kavousanos 整理而成

@TimothyKA当您访问属性页面时,您的解决方案可能会返回true,但在任何分类页面上都会返回true(并且可能会在所有其他页面上生成PHP警告)。

您需要创建一个仅在处理属性页时才返回true的条件函数。以下各项应该可以正常工作:

function my_is_wc_attribute() {

    /** 
     * Attributes are proper taxonomies, therefore first thing is 
     * to check if we are on a taxonomy page using the is_tax(). 
     * Also, a further check if the taxonomy_is_product_attribute 
     * function exists is necessary, in order to ensure that this 
     * function does not produce fatal errors when the WooCommerce 
     * is not  activated
     */
    if ( is_tax() && function_exists( \'taxonomy_is_product_attribute\') ) { 
        // now we know for sure that the queried object is a taxonomy
        $tax_obj = get_queried_object();
        return taxonomy_is_product_attribute( $tax_obj->taxonomy );
    }
    return false;
}
将上述函数添加到函数后。php中,您可以创建尽可能多的过滤器和操作来自定义属性页。例如,以下过滤器允许您仅操纵属性标题:

function my_single_term_title_filter( $attribute_title ) {

    if ( my_is_wc_attribute() ) {

        // do your stuff here
    }

    return $attribute_title;
}
add_filter( \'single_term_title\', \'my_single_term_title_filter\' );

不要忘记用您自己的前缀替换my\\uem前缀,以避免函数命名冲突。

SO网友:del4y

有一个WooCommerce功能:

is_product_taxonomy(); // Returns true when viewing a product taxonomy archive.

SO网友:TimothyKA

我找到了解决办法。(下面的代码+任何可能会偶然发现这一点的人的解释)。

$q_object = get_queried_object();
$taxonomy = $q_object->taxonomy;

// if page has taxonomy
if ( is_tax( $taxonomy ) ) {
    echo \'THIS WORKS\';
} else {
    // does not
}
1. get_queried_object();--用于当前查询的对象,如单篇文章、存档页、分类页等。。。(link to wp codex)

2. $q_object->taxonomy;--这允许我们获得查询对象的分类法(请参见第1点)

3. if ( is_tax( $taxonomy ) ) {--检查页面是否有分类法。

我希望我的解决方案是明确的,这是我第一次尝试回答我自己的问题以及有关堆栈交换的任何问题。

相关推荐