如何检索位于另一个数组的数组内的WP_OBJECT

时间:2017-09-12 作者:Dionoh

我正在构建一个WordPress网站,该网站使用一个链接到我的自定义类别的自定义AJAX过滤器。

这是我的职责ajax-filter.php:

   function filter() {

 $uid = get_current_user_id();
 $paged = ( get_query_var( \'page\' ) ) ? get_query_var( \'page\' ) : 1;
 $customer_account  = get_field(\'customer_account\', \'user_\'.$uid );



   $args = array(
     \'post_type\' => \'cpt\',
     \'posts_per_page\' => -1,
       \'orderby\' => \'date\',
     \'tax_query\' => array(
       \'relation\' => \'AND\',
       array(
         \'taxonomy\' => \'customer\',
         \'field\'    => \'term_id\',
         \'terms\'    => $customer_account,
       )
     )
   );

       $the_query = new WP_Query($args);
       $results = array();


               if (!empty($the_query->posts))
               {
                   foreach ($the_query->posts as $post)
                   {
                       $id = $post->ID;
                       array_push($results, array(
                           \'id\' => $id,
                           \'title\' => get_field(\'e_detail_title\', $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\' );
我的问题是:

如何以我在ajax-filter.php? 使用我的数据($value->title)

Array
(
    [0] => Array
          [title] => title
          [tax] => Array
                (
                    [0] => WP_Term Object
                        (
                            [term_id] => 54
)

                )

        )

1 个回复
SO网友:Johansson

您正在尝试访问数组中的对象。从中检索数据term_id, 您可以使用:

$value[0][\'tax\'][0]->term_id
请注意,前3个步骤是数组,然后是WP_Object, 里面有一个数组。

分解代码

$value                          - returns the entire array
$value[0]                       - returns the first element of the array
$value[0][\'tax\']                - returns the `tax` element and all of its contents
$value[0][\'tax\'][0]             - returns the first element of `tax`
$value[0][\'tax\'][0]->term_id    - points to the term id inside the above
更新无需使用json_encodejson_decode. 只需使用foreach输出内容:

foreach( $results as $key => $value) {
    echo $value[\'tax\']->term_id;
}
您可能还想使用$value[\'tax\'][0]->term_id 如果税内有多个术语。

结束

相关推荐

前端主题选项AJAX返回0

您能帮我得到前端ajax返回的响应值为1吗。我已经更新了以下代码,现在返回的响应值为0if (isset($_POST[\'frontliveeditor_settings\']) && isset($_POST[\'action\']) && $_POST[\'action\'] == \"fnrlvedt_updateoption\"){ if (wp_verify_nonce($_POST[\'frontendlvedt\'],\'frnendlv_u