从自定义主题函数中排除特定类别

时间:2019-05-13 作者:Jay

我目前已经运行了一些自定义主题函数(自定义单产品页面和java脚本),尽管我想从中排除特定类别。我该怎么办?

我目前已经使用以下脚本在我的单个产品中实现了一个计算器;

add_action( \'wp_enqueue_scripts\', \'my_scripts_method\' );
function my_scripts_method(){
    wp_enqueue_script( \'calc_fun\', \'/wp-content/themes/flatsome-child/assets/js/calc.js\', array(), \'1.6\');
    wp_enqueue_style( \'calc_css\', \'/wp-content/themes/flatsome-child/assets/css/calc.css\', true , 9.1 );
}
这个计算器在单一产品页面上显示,计算出产品的数量和m2。此计算器与使用以下脚本的自定义单个产品页面相关联;

add_action( \'woocommerce_before_add_to_cart_button\', \'add_content_before_addtocart_button_func\' );
add_action( \'woocommerce_before_add_to_cart_button\', \'add_content_after_addtocart_button_func\' );
add_action(\'woocommerce_after_add_to_cart_button\', \'add_content_after_true_addtocart_button_func\');
add_action(\'woocommerce_shop_loop_item_title\', \'add_woo_shop_loop_item_title\');


function add_content_before_addtocart_button_func() {

        // Echo content.
        get_template_part( \'woo-singlre-product-card\', \'template\' );

}
function add_content_after_addtocart_button_func() {

        // Echo content.
        get_template_part( \'woo-singlre-product-card-after\', \'template\' );

}
function add_content_after_true_addtocart_button_func(){
    get_template_part( \'woo-after-single-product\', \'template\'); 
}

function add_woo_shop_loop_item_title() {
    get_template_part( \'woo-shop-loop-item-title\', \'template\'); 
}

add_action( \'woocommerce_after_shop_loop_item_title\', \'custom_add_product_description\');
function custom_add_product_description ($category) {
    get_template_part( \'woo-shop-loop-card-after\', \'template\' );
}
我想从特定类别“示例”中排除这些脚本。

2 个回复
SO网友:WebElaine

WP提供了许多条件。因此,与此相反,它将JS和CSS添加到站点上的每个URL

add_action( \'wp_enqueue_scripts\', \'my_scripts_method\' );
function my_scripts_method(){
    wp_enqueue_script( \'calc_fun\', \'/wp-content/themes/flatsome-child/assets/js/calc.js\', array(), \'1.6\');
    wp_enqueue_style( \'calc_css\', \'/wp-content/themes/flatsome-child/assets/css/calc.css\', true , 9.1 );
}
您将需要这样的东西,它只会将JS和CSS添加到某些URL

add_action( \'wp_enqueue_scripts\', \'my_scripts_method\' );
function my_scripts_method(){
    // Only enqueue if this is a single product page that\'s not in product category "example"
    // has_term will accept either the name, term ID, or slug of the product category
    if(is_singular(\'product\') && !has_term(\'example\', \'product_cat\')) {
        wp_enqueue_script( \'calc_fun\', \'/wp-content/themes/flatsome-child/assets/js/calc.js\', array(), \'1.6\');
        wp_enqueue_style( \'calc_css\', \'/wp-content/themes/flatsome-child/assets/css/calc.css\', true , 9.1 );
    }
}
您可以在其他函数中执行相同的操作,而不是总是执行get_template_part(), 将其包装在一个条件中,以检查这是否是要向其中添加代码的特定产品。

SO网友:nmr

如果要排除多个类别,可以使用以下内容:

function se337775_omit_calculator()
{
    global $post;

    // calculator can be added only on single product page
    if ( ! is_singular(\'product\') ) {
        return true;
    }

    $taxonomy = \'product_cat\';
    //
    // slugs of categories without calculator
    $excluded = [\'first_category\', \'another_category\'];
    //
    // get current product category
    $product_terms = wp_get_object_terms( $post->ID, $taxonomy, array( \'fields\' => \'id=>slug\' ) );
    if ( ! is_array($product_terms) ) {
        $product_terms = [];
    }
    else {
        $product_terms = array_values( $product_terms );
    }
    //
    // if product has any of category from "$excluded" - return TRUE
    $in_excluded_cat = array_intersect($product_terms, $excluded);
    if ( is_array($in_excluded_cat) && count($in_excluded_cat) ) {
        return true;
    }

    return false;
}
然后在需要时使用此功能:

function my_scripts_method() {

    if ( se337775_omit_calculator() )
        return;

    wp_enqueue_script( \'calc_fun\', get_stylesheet_directory_uri() . \'/assets/js/calc.js\', array(), \'1.6\');
    wp_enqueue_style( \'calc_css\',  get_stylesheet_directory_uri() . \'/assets/css/calc.css\', true , 9.1 );
}

相关推荐

Dropdown menu for categories

当我使用下面的代码时<?php wp_nav_menu( array(\'menu\' => \'categories\' )); ?> 我可以创建一个新的菜单来列出我创建的wordpress中的所有类别。我用它在页面中间列出所有类别。我现在的问题是:有没有一种简单的方法可以为存在的每个子类别创建下拉菜单?那么,当我点击一个特定的类别时,它的子类别会显示出来吗?