为了账号安全,请及时绑定邮箱和手机立即绑定

更改 WooCommerce 产品描述选项卡按钮和标题

更改 WooCommerce 产品描述选项卡按钮和标题

PHP
九州编程 2023-08-19 16:17:41
当页面的主体类为“parent-product_cat-vinyl”时,我想将 WooCommerce 产品描述选项卡按钮和标题“描述”更改为“Tracklist”。到目前为止,这是我的代码:<?phpif ( is_singular() ) {   $classes = get_body_class();   if (in_array('parent-product_cat-vinyl',$classes)) {       add_filter( 'woocommerce_product_description_tab_title','ps_rename_description_product_tab_label');       function ps_rename_description_product_tab_label() {           return 'Tracklist';       }   }}但这似乎不起作用。
查看完整描述

1 回答

?
Qyouu

TA贡献1786条经验 获得超11个赞

您可以使用以下复合过滤器挂钩($tab_key在您的情况下是description):

  • woocommerce_product_{$tab_key}_tab_title

  • woocommerce_product_{$tab_key}_heading

可以通过两种方式完成:

有条件地使用定义的主体类:

add_filter( 'woocommerce_product_description_tab_title', 'change_product_description_tab_text' );

add_filter( 'woocommerce_product_description_heading', 'change_product_description_tab_text' );

function change_product_description_tab_text( $title ) {

    global $product;


    if( in_array( 'parent-product_cat-vinyl', get_body_class() ) ) {

        return __('Tracklist', 'woocommerce');

    }

    return $title;

}

或者有条件地针对产品类别(包括父产品类别):


// Custom conditional function that handle parent product categories too

function has_product_categories( $categories, $product_id = 0 ) {

    $parent_term_ids = $categories_ids = array(); // Initializing

    $taxonomy        = 'product_cat';

    $product_id      = $product_id == 0 ? get_the_id() : $product_id;


    if( is_string( $categories ) ) {

        $categories = (array) $categories; // Convert string to array

    }


    // Convert categories term names and slugs to categories term ids

    foreach ( $categories as $category ){

        $result = (array) term_exists( $category, $taxonomy );

        if ( ! empty( $result ) ) {

            $categories_ids[] = reset($result);

        }

    }


    // Loop through the current product category terms to get only parent main category term

    foreach( get_the_terms( $product_id, $taxonomy ) as $term ){

        if( $term->parent > 0 ){

            $parent_term_ids[] = $term->parent; // Set the parent product category

            $parent_term_ids[] = $term->term_id; // (and the child)

        } else {

            $parent_term_ids[] = $term->term_id; // It is the Main category term and we set it.

        }

    }

    return array_intersect( $categories_ids, array_unique($parent_term_ids) ) ? true : false;

}


add_filter( 'woocommerce_product_description_tab_title', 'change_product_description_tab_text' );

add_filter( 'woocommerce_product_description_heading', 'change_product_description_tab_text' );

function change_product_description_tab_text( $title ) {

    global $product;

    

    // Here set in the array the targeted product categories

    $categories = array('Vinyl');


    if ( has_product_categories( $categories, $product->get_id() ) ) {

         return __('Tracklist', 'woocommerce');

    }

    return $title;

}

代码位于活动子主题(或活动主题)的functions.php 文件中。经过测试并有效。


查看完整回答
反对 回复 2023-08-19
  • 1 回答
  • 0 关注
  • 134 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信