如何从多维数组中的 WP_Query 数组中获取发布数据? [英] How to get post data form WP_Query array in multidimensional array?

查看:34
本文介绍了如何从多维数组中的 WP_Query 数组中获取发布数据?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何从 object(WP_Query) 获取 $value 数组值?

post_content、ID、页面名称、类别等.

这是我的代码:

<预><代码>全球 $post;$args = 数组('post_type' =>'历史','订单' =>'ASC');$master = [];$post_query = new WP_Query($args);如果 ($post_query->have_posts() ) {而 ($post_query->have_posts()) {$post_query->the_post();/* 获取发布日期 */$year = get_the_date('Y');$mon = get_the_date('M');$master[$year][$mon][] = $post_query;}foreach ($master as $masterkey => $mastervalue) {回声<p>";回声主密钥:".$万能钥匙.<br>";foreach($mastervalue as $key => $value) {回声键:".$key .<br>";回声值:".$价值.<br>";}回声</p>";}}wp_reset_postdata();

var_dump for $value 数组:

array(1) { [0]=>object(WP_Query)#2459 (51) { [查询"]=>array(2) { [post_type"]=>string(7) 历史";[订单"]=>字符串(3)ASC";} [query_vars"]=>数组(63){[post_type"]=>string(7) 历史";[订单"]=>字符串(3)ASC";[错误"]=>字符串(0)"[m"]=>字符串(0)"[p"]=>int(0) [post_parent"]=>字符串(0)"[子帖子"]=>字符串(0)"[subpost_id"]=>字符串(0)"[附件"]=>字符串(0)"[attachment_id"]=>int(0) [名称"]=>字符串(0)"[页面名称"]=>字符串(0)"[page_id"]=>int(0) [第二个"]=>字符串(0)"[分钟"]=>字符串(0)"[小时"]=>字符串(0)"[天"]=>int(0) [monthnum"]=>int(0) [年"]=>int(0) [w"]=>int(0) [category_name"]=>字符串(0)"[标签"]=>字符串(0)"[猫"]=>字符串(0)"[tag_id"]=>字符串(0)"[作者"]=>字符串(0)"[作者姓名"]=>字符串(0)"[饲料"]=>字符串(0)"[tb"]=>字符串(0)"[分页"]=>int(0) [meta_key"]=>字符串(0)"[元值"]=>字符串(0)"[预览"]=>字符串(0)"[s"]=>字符串(0)"[句子"]=>字符串(0)"[标题"]=>字符串(0)"[字段"]=>字符串(0)"[menu_order"]=>字符串(0)"[嵌入"]=>字符串(0)"[category__in"]=>array(0) { } [category__not_in"]=>array(0) { } [category__and"]=>array(0) { } [post__in"]=>array(0) { } [post__not_in"]=>array(0) { } [post_name__in"]=>array(0) { } [tag__in"]=>array(0) { } [tag__not_in"]=>array(0) { } [tag__and"]=>array(0) { } [tag_slug__in"]=>array(0) { } [tag_slug__and"]=>array(0) { } [post_parent__in"]=>array(0) { } [post_parent__not_in"]=>array(0) { } [author__in"]=>array(0) { } [author__not_in"]=>array(0) { } [ignore_sticky_posts"]=>bool(false) [suppress_filters"]=>bool(false) [cache_results"]=>bool(true) [update_post_term_cache"]=>bool(true) [lazy_load_term_meta"]=>bool(true) [update_post_meta_cache"]=>bool(true) [posts_per_page"]=>int(10) [nopaging"]=>bool(false) [comments_per_page"]=>字符串(2)50"[no_found_rows"]=>bool(false) } [tax_query"]=>object(WP_Tax_Query)#2465 (6) { [查询"]=>数组(0){}[关系"]=>字符串(3)与"[table_aliases":受保护]=>array(0) { } [queried_terms"]=>array(0) { } [primary_table"]=>string(11) "pkctU_posts";[primary_id_column"]=>字符串(2)ID"} ["meta_query"]=>对象(WP_Meta_Query)#2452(9){ [查询"]=>数组(0){}[关系"]=>NULL [meta_table"]=>NULL [meta_id_column"]=>NULL [primary_table"]=>NULL [primary_id_column"]=>NULL [table_aliases":protected]=>数组(0){}[子句":受保护]=>数组(0){}[has_or_relation":受保护]=>bool(false) } [date_query"]=>bool(false) [请求"]=>string(295) "SELECT SQL_CALC_FOUND_ROWS pkctU_posts.ID FROM pkctU_posts WHERE 1=1 AND pkctU_posts.post_type = 'history' AND (pkctU_posts.post_status = 'publish' OR pkctU_posts.post_status ='OR pkctU_posts.post_status ='dp-rewrite-republish') ORDER BY pkctU_posts.post_date ASC LIMIT 0, 10"[帖子"]=>数组(8) { [0]=>object(WP_Post)#2458 (24) { [ID"]=>int(3786) [post_author"]=>字符串(1)1"[post_date"]=>字符串(19)2016-01-24 18:34:38"[post_date_gmt"]=>字符串(19)2016-01-24 15:34:38"[post_content"]=>字符串(1937)"在 vero eos et accusam et justo duo dolores et ea rebum.Stet clita kasd gubergren,无海 takimata sanctus est Lorem ipsum dolor 坐 amet.Lorem ipsum dolor sat amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut Labore et dolore magna aliquyam erat, sed diam voluptua.

解决方案

如果此问题与 你的这个问题,你需要以这种格式的每篇文章的标题Year >月 >每个帖子的标题,那么你可以使用以下代码:

$posts = get_posts(array('post_type' =>'历史','posts_per_page' =>-1,'orderby' =>'日期'));$master = [];foreach ($posts as $post) {setup_postdata($post);$time = strtotime($post->post_date);$year = date('Y', $time);$mon = date('F', $time);$master[$year][$mon][] = $post->post_title;}wp_reset_postdata();foreach ((array)$master as $yearly => $yvalue) {回声 $yearly .":<br>>回声<ul>";foreach ($yvalue as $monthly => $mvalue) {echo "<li>".$每月.:</li>";回声<ul>";foreach ($mvalue as $post_title_k => $post_title_v) {echo "<li>".$post_title_v .</li>";}echo "</ul>";}echo "</ul>";}

请注意,我使用了 post 对象 中的 post_title.这将返回以下输出:

2021:一月:1.帖子标题2.帖子标题行进:3.帖子标题2020:可能:4.帖子标题

当您使用 get_posts 时,它将返回 post 对象.每个对象包括以下内容:

WP_Post 对象([ID] =>[post_author] =>[post_date] =>[post_date_gmt] =>[post_content] =>[post_title] =>[post_excerpt] =>[post_status] =>[评论状态] =>[ping_status] =>[post_password] =>[post_name] =>[to_ping] =>[ping] =>[后修改] =>[post_modified_gmt] =>[post_content_filtered] =>[post_parent] =>[指南] =>[menu_order] =>[post_type] =>[post_mime_type] =>[评论计数] =>[过滤器] =>)

在上面的代码中,我在这一行中访问了 $post->post_title $master[$year][$mon][] = $post->post_title.

How can I get $value array values from object(WP_Query)?

post_content, ID, pagename, category etc..

Here is my code:


    global $post;
    
    $args = array(
        'post_type' => 'history',
        'order'     => 'ASC'
    );
    
    $master = [];
        
    $post_query = new WP_Query($args);
    
    if ($post_query->have_posts() ) {
                
        while ($post_query->have_posts()) {
                
            $post_query->the_post();
            
            /* Get Post Date */
            $year = get_the_date( 'Y' );
            $mon = get_the_date( 'M' );
                
            $master[$year][$mon][] = $post_query;
            
        }
        
        foreach ($master as $masterkey => $mastervalue) {
            echo "<p>";

            echo "masterkey: ".  $masterkey . "<br>";

            foreach($mastervalue as $key => $value) {
                echo "key: " . $key . "<br>";
                echo "value: " . $value . "<br>";
                                        
            }
            
            echo "</p>";
        }
        
    }

wp_reset_postdata();

var_dump for $value array:

array(1) { [0]=> object(WP_Query)#2459 (51) { ["query"]=> array(2) { ["post_type"]=> string(7) "history" ["order"]=> string(3) "ASC" } ["query_vars"]=> array(63) { ["post_type"]=> string(7) "history" ["order"]=> string(3) "ASC" ["error"]=> string(0) "" ["m"]=> string(0) "" ["p"]=> int(0) ["post_parent"]=> string(0) "" ["subpost"]=> string(0) "" ["subpost_id"]=> string(0) "" ["attachment"]=> string(0) "" ["attachment_id"]=> int(0) ["name"]=> string(0) "" ["pagename"]=> string(0) "" ["page_id"]=> int(0) ["second"]=> string(0) "" ["minute"]=> string(0) "" ["hour"]=> string(0) "" ["day"]=> int(0) ["monthnum"]=> int(0) ["year"]=> int(0) ["w"]=> int(0) ["category_name"]=> string(0) "" ["tag"]=> string(0) "" ["cat"]=> string(0) "" ["tag_id"]=> string(0) "" ["author"]=> string(0) "" ["author_name"]=> string(0) "" ["feed"]=> string(0) "" ["tb"]=> string(0) "" ["paged"]=> int(0) ["meta_key"]=> string(0) "" ["meta_value"]=> string(0) "" ["preview"]=> string(0) "" ["s"]=> string(0) "" ["sentence"]=> string(0) "" ["title"]=> string(0) "" ["fields"]=> string(0) "" ["menu_order"]=> string(0) "" ["embed"]=> string(0) "" ["category__in"]=> array(0) { } ["category__not_in"]=> array(0) { } ["category__and"]=> array(0) { } ["post__in"]=> array(0) { } ["post__not_in"]=> array(0) { } ["post_name__in"]=> array(0) { } ["tag__in"]=> array(0) { } ["tag__not_in"]=> array(0) { } ["tag__and"]=> array(0) { } ["tag_slug__in"]=> array(0) { } ["tag_slug__and"]=> array(0) { } ["post_parent__in"]=> array(0) { } ["post_parent__not_in"]=> array(0) { } ["author__in"]=> array(0) { } ["author__not_in"]=> array(0) { } ["ignore_sticky_posts"]=> bool(false) ["suppress_filters"]=> bool(false) ["cache_results"]=> bool(true) ["update_post_term_cache"]=> bool(true) ["lazy_load_term_meta"]=> bool(true) ["update_post_meta_cache"]=> bool(true) ["posts_per_page"]=> int(10) ["nopaging"]=> bool(false) ["comments_per_page"]=> string(2) "50" ["no_found_rows"]=> bool(false) } ["tax_query"]=> object(WP_Tax_Query)#2465 (6) { ["queries"]=> array(0) { } ["relation"]=> string(3) "AND" ["table_aliases":protected]=> array(0) { } ["queried_terms"]=> array(0) { } ["primary_table"]=> string(11) "pkctU_posts" ["primary_id_column"]=> string(2) "ID" } ["meta_query"]=> object(WP_Meta_Query)#2452 (9) { ["queries"]=> array(0) { } ["relation"]=> NULL ["meta_table"]=> NULL ["meta_id_column"]=> NULL ["primary_table"]=> NULL ["primary_id_column"]=> NULL ["table_aliases":protected]=> array(0) { } ["clauses":protected]=> array(0) { } ["has_or_relation":protected]=> bool(false) } ["date_query"]=> bool(false) ["request"]=> string(295) "SELECT SQL_CALC_FOUND_ROWS pkctU_posts.ID FROM pkctU_posts WHERE 1=1 AND pkctU_posts.post_type = 'history' AND (pkctU_posts.post_status = 'publish' OR pkctU_posts.post_status = 'acf-disabled' OR pkctU_posts.post_status = 'dp-rewrite-republish') ORDER BY pkctU_posts.post_date ASC LIMIT 0, 10" ["posts"]=> array(8) { [0]=> object(WP_Post)#2458 (24) { ["ID"]=> int(3786) ["post_author"]=> string(1) "1" ["post_date"]=> string(19) "2016-01-24 18:34:38" ["post_date_gmt"]=> string(19) "2016-01-24 15:34:38" ["post_content"]=> string(1937) "
At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.

解决方案

If this question is related to this question of yours, and you need the title of each post in this format Year > Months > Title of each post, then you could use the following code:

$posts = get_posts(array(
  'post_type' => 'history',
  'posts_per_page' => -1,
  'orderby'   => 'date'
));

$master = [];

foreach ($posts as $post) {
  setup_postdata($post);

  $time = strtotime($post->post_date);
  $year = date('Y', $time);
  $mon = date('F', $time);

  $master[$year][$mon][] = $post->post_title;
}

wp_reset_postdata();


foreach ((array)$master as $yearly => $yvalue) {
  echo $yearly . ": <br>";
  echo "<ul>";
  foreach ($yvalue as $monthly => $mvalue) {
    echo "<li>" . $monthly . ": </li>";
    echo "<ul>";
    foreach ($mvalue as $post_title_k => $post_title_v) {
      echo "<li>" . $post_title_v . "</li>";
    }
    echo "</ul>";
  }
  echo "</ul>";
}

Notice that i used post_title from the post object. Which will return the following output:

2021:
  January:
    1.Post Title
    2.Post Title
  March:
    3.Post Title

2020:
  May:
    4.Post Title

When you use get_posts it will return post objects. Each object includes the followings:

WP_Post Object
(
    [ID] =>
    [post_author] =>
    [post_date] => 
    [post_date_gmt] => 
    [post_content] => 
    [post_title] => 
    [post_excerpt] => 
    [post_status] =>
    [comment_status] =>
    [ping_status] => 
    [post_password] => 
    [post_name] =>
    [to_ping] => 
    [pinged] => 
    [post_modified] => 
    [post_modified_gmt] =>
    [post_content_filtered] => 
    [post_parent] => 
    [guid] => 
    [menu_order] =>
    [post_type] =>
    [post_mime_type] => 
    [comment_count] =>
    [filter] =>
)

In the code above i accessed $post->post_title in this line $master[$year][$mon][] = $post->post_title.

这篇关于如何从多维数组中的 WP_Query 数组中获取发布数据?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆