我试图将从AJAX返回的Post值与可用的分类术语\\u id进行比较,但不知何故,我运气不佳。例如,基于用户选择的My$\\u POST[\'recvid\']值为“70=开(&;O);72=打开(&N);74=开\'。
if( $brands = get_terms( array( \'taxonomy\' => \'recipebrands\' ) ) ) : //constructing array of available terms
$brands_terms = array();
foreach( $brands as $brand ) { //going thru all terms
if( ????? ) // trying to compare if POSTED values are within available term array
$brands_terms[] = $brand->slug; //if yes, then build the array of all slugs
}
endif;
不知何故,我被困在if条款内,无法想出如何构建arrayI尝试的$brands\\u条款
isset( $_POST[\'recvid\'][$brand->term_id ] ) && $_POST[\'recvid\'][$brand->term_id] == \'on\')
但是没有运气。
来自ajax的数据包含“recvid”变量:
jQuery.ajax({
url: my_custom_vars.ajax_url,
data: {
action: \'my_filter_function\',
recvid: filter.serialize() // form data
},
是的,我知道,应该更多地了解这些事情:)
SO网友:Kaspars Foigts
只需检查$\\u POST是否包含id为相应术语的键。
if (isset($_POST[\'recvid\'][$term->term_id])) {
然而,我不会重复所有的条款。
get_terms
函数具有相应的选项。所以,要接收所有发布的ID,您可以这样做(还要注意,第一个参数可能是字符串,不需要数组):
$brands = get_terms(\'recipebrands\', [
\'include\' => array_filter(array_keys($_POST[\'recvid\']), function($value) { return is_numeric($value); }),
]);
上述代码的作用是什么?
array_keys
显然,返回$_POST数组键array_filter
仅过滤出数字键(请参见匿名函数)include
选项get_brands()
允许您指定所需术语的确切ID