Php 获取最新帖子ID未按预期工作

Php 获取最新帖子ID未按预期工作,php,wordpress,Php,Wordpress,我试图在WordPress中获取最新的帖子ID,但我使用的两种不同方法返回的结果不同 仅供参考,如果我查看PHPmyAdmin,我可以看到最新的帖子ID是3000 如果我这样做 $args = array( 'post_type' => 'any' ); $the_ID = get_posts($args); $latest_ID = $the_ID[0]->ID; echo $latest_ID; …它返回2999而不是3000。这很奇怪 但是如果我在这样的数组中指定一

我试图在WordPress中获取最新的帖子ID,但我使用的两种不同方法返回的结果不同

仅供参考,如果我查看PHPmyAdmin,我可以看到最新的帖子ID是3000

如果我这样做

$args = array( 
    'post_type' => 'any'
);
$the_ID = get_posts($args);
$latest_ID = $the_ID[0]->ID;
echo $latest_ID;
…它返回2999而不是3000。这很奇怪

但是如果我在这样的数组中指定一些post类型

$args = array( 
    'post_type' => array('post', 'page', 'attachment')
);
$the_ID = get_posts($args);
$latest_ID = $the_ID[0]->ID;
echo $latest_ID;
…它返回3000,这是正确的ID,但也不是很容易维护

我的理解是,‘post_type’=>‘any’应该包括所有的post类型,显然我不想使用第二种方法,因为每次有新的post类型时,我都必须手动更新数组


有办法解决这个问题吗?或者是获取最新帖子ID的更好方法?

使用此代码100%工作和测试:

注意:当您注册新的帖子类型时,将自动添加到以下条件中

function get_all_custom_post_types() {
    $args = array( 'public' => true );
    $output = 'objects'; //'names'; // names or objects, note names is the default
    $operator = 'and'; // 'and' or 'or'
    $custom_post_types = get_post_types( $args, $output, $operator );           
    $post_types = array();
    foreach ( $custom_post_types as $k => $post_type ) {
        $post_types[] = $post_type->name;
    }           
    return $post_types;
}

//print_r(get_all_custom_post_types()); // Array ( [0] => post [1] => page [2] => attachment [3] => product [4] => movies )

$args = array(
    'post_type' => get_all_custom_post_types(),
    'posts_per_page'  => 10
);

$latest_cpt = get_posts($args );
//print_r($latest_cpt);
echo $latest_cpt[0]->ID;
我发现了问题

我的一个插件的帖子类型不是公共的。我把它从假的改成了真的

'public' => true

…现在,如果我使用'post_type'=>'any',效果很好。

这几乎与我发布的第二种方法相同,但正如前面提到的,它不太可维护。如果添加了一个新的帖子类型(比如通过激活一个新插件来创建一个新的帖子类型),那么我必须找出帖子类型是什么,然后将其添加到数组中。我不知道大家都知道“post_type”=>“any”不起作用。谢谢你的努力。解决方案比我想象的要简单,从技术上讲,一开始就没有什么“坏”的地方。看看我的答案。事实证明,“post_type”=>“any”可以很好地工作,假设所有的post类型都可以公开查询。