如何在插件文件中获取 Woocommerce 产品类别

地图马利斯

我正在尝试使用以下代码获取 Wordpress 插件中的所有产品类别。我在活动主题中尝试了相同的代码,它们正在工作并提供正确的输出,但是当我尝试在插件文件中执行相同操作时,它返回一个空数组。有没有其他方法可以做到这一点?西隧get_categories()是不是插件文件内工作?

编辑:我将其用作对 AJAX 调用的响应,如下所示。

我的代码如下,

add_action( 'wp_ajax_tcf_et_mp_get_categories', 'tcf_et_mp_get_categories' );
function tcf_et_mp_get_categories(){

    $taxonomy     = 'product_cat';
    $orderby      = 'name';  
    $show_count   = 0;      // 1 for yes, 0 for no
    $pad_counts   = 0;      // 1 for yes, 0 for no
    $hierarchical = 1;      // 1 for yes, 0 for no  
    $title        = '';  
    $empty        = 1;

    $args = array(  'taxonomy'     => $taxonomy,
                     'orderby'      => $orderby,
                     'show_count'   => $show_count,
                     'pad_counts'   => $pad_counts,
                     'hierarchical' => $hierarchical,
                     'title_li'     => $title,
                    'hide_empty'   => $empty );

    $all_materials = get_categories( $args );

    foreach($all_materials as $material){
         $materials_drop_down .= '<option value="'.$material->term_id.'" '.$selected_str.'>'.$material->name.'</option>';
    }
    //print_r( $all_materials );
    wp_send_json( $materials_drop_down );
    die();
}
地图马利斯

最后,我可以用 MySQL Query 解决这个问题,我试图在 WP AJAX 函数中获取 Woocommerce 产品类别,其中get_categories()get_terms()不适用于product_cat分类法。但是在这个函数中我可以执行 WP MySQL Quires 所以下面的代码产生并返回预期的输出。

add_action( 'wp_ajax_tcf_et_mp_get_categories', 'tcf_et_mp_get_categories' );
function tcf_et_mp_get_categories()
{
    global $wpdb;
    $categories = $wpdb->get_results( " SELECT wp_terms.* 
                                        FROM wp_terms 
                                        LEFT JOIN wp_term_taxonomy ON wp_terms.term_id = wp_term_taxonomy.term_id
                                        WHERE wp_term_taxonomy.taxonomy = 'product_cat'" );

    $materials_drop_down = '<select>';
    $materials_drop_down .= '<option value="0">Choose Material Type</option>';
    foreach( $categories as $category )
    {
        $materials_drop_down .= '<option value="'. $category->term_id .'">' . $category->name . '</option>';
    }
    $materials_drop_down = '</select>';

    wp_send_json( $materials_drop_down );
    die;
}

希望这会对某人有所帮助。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Woocommerce的分层产品类别插件

woocommerce获取产品类别ID

从Woocommerce中的子产品类别ID获取父产品类别ID

从WooCommerce中的“相关产品”中排除产品类别

在Woocommerce中检查产品类别的产品

从WooCommerce的订单项中获取产品类别ID

获取WooCommerce中的所有产品类别

如何获得Woocommerce顶级产品类别?

如何从woocommerce的功能中排除产品类别?

在Woocommerce中根据产品类别更改货币符号

在Woocommerce中基于产品类别隐藏价格

在Woocommerce中显示类别产品之后移动产品类别描述

如何从当前的WooCommerce产品类别中获取所有产品?

从显示类别为Woocommerce的子类别的产品类别中删除边栏

从 WooCommerce 产品类别小部件中删除父类别和子类别

从产品类别中排除最近查看的产品小部件中的Woocommerce产品

在Woocommerce档案中获取当前产品类别的子类别

获取Woocommerce中特定产品类别的特定产品属性值

在Woocommerce单一产品页面中获取产品类别名称和描述

在WP_Query中从当前产品类别术语ID获取所有Woocommerce产品

使用 Get 请求获取 Woocommerce 产品类别档案的销售产品

修改Woocommerce模板文件以按产品类别显示产品

将“销售”产品类别添加到Woocommerce中销售的产品中

在Woocommerce结帐中为产品类别中的特定虚拟产品启用送货地址

woocommerce-如何获得当前产品类别中最顶层的类别

定位特定的产品类别,它是WooCommerce中的子类别

从Woocommerce类别下拉小部件中禁用某些产品类别

列出Woocommerce中给定产品类别的子类别

在自定义家庭和产品类别档案中显示WooCommerce产品属性