解决
我找到了答案。
我的问题是(正如你们许多人已经告诉我的那样)我正在编码和解码我的东西。我现在正在做的是我删除了编码和解码并改变了这个:
array_push($results, array(
'id' => $id,
'tax' => get_the_terms( $post->ID, 'type', $id ),
));
到此:
array_push($results, (object) array(
'id' => $id,
'tax' => get_the_terms( $post->ID, 'type', $id ),
));
现在我能够获得以下税收:
foreach($value->tax as $tax){
echo $tax->name . ', ' ;
}
没有ajax通过复制找到的第一个分类法并将其放在每个项目上来搞砸我的循环。
谢谢大家的帮助。
问题解决了
我正在构建一个使用自定义AJAX过滤器的wordpress网站 已链接到我的自定义类别。
这是我的功能 ajax-filter.php :
function filter() { $results = array(); if (!empty($the_query->posts)) { foreach ($the_query->posts as $post) { $id = $post->ID; array_push($results, array( 'id' => $id, 'tax' => get_the_terms( $post->ID, 'type', $id ), )); } } wp_reset_postdata(); $someJSON = json_encode($results); // Convert JSON string to Object $someObject = json_decode($someJSON); foreach($someObject as $key => $value) { echo $value->title; } die; } add_action( 'wp_ajax_filter', 'filter' ); add_action( 'wp_ajax_nopriv_filter', 'filter' );
我的问题是:
我如何以我使用的方式将 tax 中的数据用于<em> term-id 我的 ajax-filter.php?使用我的数据($ value-&gt; title)
Array ( [0] => Array [title] => title [tax] => Array ( [0] => WP_Term Object ( [term_id] => 54 ) ) )
答案 0 :(得分:1)
首先,在创建代码的最小示例方面做得很好,它使我们更容易看到问题以及如何提供帮助:)
现在回答你的问题:
在您回答实际问题之前,有两个问题
get_the_terms
只需要2个参数 - 您不需要传递第3个参数$ id。 id已在第一个参数中传递get_the_terms
返回一个数组,因为帖子可以有多个与之关联的术语。您需要考虑如何处理多个术语。每个帖子处理一个字词
现在,我假设你只会有一个与帖子相关联的词汇,或者如果还有更多的词汇只返回第一个词。
按如下方式更新您的代码 - 正在进行的操作的说明在注释中:
if (!empty($the_query->posts)){
foreach ($the_query->posts as $post){
// add this before you push the the values to your $results array
// get an array with the term_ids only
$term_ids = array();
$term_objs = get_the_terms( $post->ID, 'type' );
// get_the_terms returns an array of WP_Term objects
foreach ($term_objs as $term_obj)
$term_ids[] = $term_obj->term_id; // get the id from the WP_Term object
// $term_ids could have many ids, so for the purpose of your example
// we're just going to get the first one
// You will need to decide how you'll handle multiple ids
if ($term_ids) $term_id = $term_ids[0];
$id = $post->ID;
array_push($results, array(
'id' => $id,
[...] // your other values here
'tax' => $term_id, // add just the single term id value
));
}
}
这将全部发送到您的$results
数组,如下所示:
排列
(
[0] =&gt;排列
(
[title] =&gt;标题
[tax] =&gt; 54
)
)
现在,您可以在循环中访问术语ID,例如$value->tax
,例如
foreach($someObject as $key => $value) {
echo $value->title;
echo $value->tax; // or whatever you want to do with it....
}
处理每个帖子的多个字词
如果您想处理多个术语,可以推送$term_ids
数组:
foreach ($term_objs as $term_obj)
$term_ids[] = $term_obj->term_id;
array_push($results, array(
'id' => $id,
[...] // your other values here
'tax' => $term_ids, // add the array of term ids
));
...然后在检索它们时遍历数组:
foreach($someObject as $key => $value) {
$term_ids = $value->tax;
foreach ($term_ids as $term_id)
echo $term_id; // or whatever you want to do with it....
}