【问题标题】:Array not separating category ids in WordPress 'tax_query'数组不分隔 WordPress 'tax_query' 中的类别 ID
【发布时间】:2014-02-19 04:14:08
【问题描述】:

我有以下代码,但它无法正常工作,因为数组没有按预期响应。我在 WordPress 元框上创建类别选择并作为序列化数据存储在数据库中,但是当使用 tax_query 获取所选类别时,数组在 terms 字段中分隔类别 ID 失败。检查下面的代码:

$selected_categories = get_post_meta($post->ID, $prefix . 'services_category', true);
if ($selected_categories != '') {
    $categories = unserialize(get_post_custom($post->ID)[$prefix . 'services_category'][0]);
}

$cat_query = '';
$cat_query =  ( !empty($categories) ) ? implode(',', $categories) : '';

if ($cat_query != '') {
    $tax_query = array(
            array(
            'taxonomy' => 'services_cat',
            'field' => 'id',
            'terms' => array($cat_query),
            ),
        );
} else { $tax_query = null; }




$services_paged = is_front_page() ? get_query_var( 'page' ) : get_query_var( 'paged' );
query_posts(array(
    'post_type' => 'mt-services',
    'posts_per_page' => $services,
    'paged' => $services_paged,
    'tax_query' => $tax_query
));

这是我的问题所在:我正在尝试从 metabox 中回显选定的类别,但不幸的是它们都作为一个项目回显。

'terms' => array($cat_query)

结果如下:

print_r(array($cat_query) 

给我

Array ( [0] => 73,72 )

而不是

Array ( [0] => 73, [1] => 72 )

详细解释

$categories 的值为 73 和 72。

使用 implode 函数我们得到 $cat_query which(73,72)

因此array($cat_query) 将是array(73,72),打印出来时应该是:

Array ( [0] => 73, [1] => 72 )

但是,$cat_query 值被视为一个单元,最终被打印为:

Array ( [0] => 73,72 )

错了

【问题讨论】:

    标签: php arrays wordpress


    【解决方案1】:

    $cat_query 是从 $categories 使用函数 implode 创建的。 所以我假设$categories 是一个看起来像你想要的数组:

    Array ( [0] => 73, [1] => 72 )
    

    【讨论】:

    • 你是对的,但是 $categories 已经是未序列化的数据,它的值是 73 和 72。我已经编辑了这个问题。请检查。
    • 我不知道你到底想要什么,但我假设你想将内爆数组转换回来。使用 implode 函数,它将不同的数组值作为一个字符串返回。然后,当您使用array($cat_query) 时,它只会将一个元素插入到数组中。如果您想再次将它们分开,请使用:explode(',', $cat_query)
    猜你喜欢
    • 2014-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多