我正在尝试使用以下代码获取 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] 删除。
我来说两句