首页 文章

从WordPress的循环中获取get_posts的ID

提问于
浏览
0

我在这里提出第一个问题,所以请随意将我引导到其他地方(是的,我确实尝试搜索重复项,但我的stackoverflow技能可能有限) .

我正在构建一个Wordpress插件,可以创建一个前端仪表板来编辑自定义帖子类型 . 我正在使用get_posts查询来显示当前用户帖子的列表及其各自的编辑表单 .

问题是我似乎无法从WP_Post对象访问帖子ID . 当我变换转储时,一切似乎都是犹太人......

这是我的代码(简化):$ currentuser = get_current_user_id(); $ args = array('author'=> $ currentuser,'posts_per_page'=> -1,'post_type'=>'board_post',);

$myposts = get_posts( $args );
foreach ( $myposts as $jb_post ) : setup_postdata( $post ); 
?>
<a href="#edit_<?=$jb_post->id ?>" data-toggle="modal" data-target="#edit_<?=$jb_post->id ?>" class="list-group-item"> Edit </a> <?php endforeach; ?>

在帖子ID应该是什么的地方没有输出 .

<?=get_the_title($jb_post); ?>

这输出正确的 Headers . 当我尝试以下所有内容时,它会回显父页面的ID:

<?=get_the_ID($jb_post); ?>
<?=the_ID($jb_post); ?>
<?=get_the_ID(); ?>
<?=the_ID(); ?>

我认为我提起这些帖子的方式存在某种结构性问题 . 抛出wp_reset_query不会解决问题 . 有没有人知道有关此类事情的最佳做法的任何资源?

编辑:这是var_dump($ jb_post)

array(15) {
[0]=>
  object(WP_Post)#285 (24) {
    ["ID"]=>
    int(253)
    ["post_author"]=>
    string(1) "1"
    ["post_date"]=>
    string(19) "2014-04-17 18:36:27"
    ["post_date_gmt"]=>
    string(19) "2014-04-17 18:36:27"
    ["post_content"]=>
    string(8) "gsdljdkf"
    ["post_title"]=>
    string(10) "Shortcoded"
    ["post_excerpt"]=>
    string(0) ""
    ["post_status"]=>
    string(7) "publish"
    ["comment_status"]=>
    string(6) "closed"
    ["ping_status"]=>
    string(4) "open"
    ["post_password"]=>
    string(0) ""
    ["post_name"]=>
    string(12) "shortcoded-2"
    ["to_ping"]=>
    string(0) ""
    ["pinged"]=>
    string(0) ""
    ["post_modified"]=>
    string(19) "2014-04-17 18:36:27"
    ["post_modified_gmt"]=>
    string(19) "2014-04-17 18:36:27"
    ["post_content_filtered"]=>
    string(0) ""
    ["post_parent"]=>
    int(0)
    ["guid"]=>
    string(51) "http://XXX.0.0.1:4001/wordpress/board/shortcoded-2/"
    ["menu_order"]=>
    int(0)
    ["post_type"]=>
    string(10) "board_post"
    ["post_mime_type"]=>
    string(0) ""
    ["comment_count"]=>
    string(1) "0"
    ["filter"]=>
    string(3) "raw"
  }
  [1]=>
  object(WP_Post)#284 (24) {
(so on and so forth for all posts)
}

1 回答

  • 3

    这是因为您没有指定$ args数组参数 . 一旦你指定它们,你就会得到理想的结果 .

    另外,你的代码:get_the_title($ jb_post);需要像这样:get_the_title($ jb_post-> ID);

    有关get_posts()的完整参考,请访问:https://codex.wordpress.org/Template_Tags/get_posts

相关问题