Php 获取最新帖子ID未按预期工作
我试图在WordPress中获取最新的帖子ID,但我使用的两种不同方法返回的结果不同 仅供参考,如果我查看PHPmyAdmin,我可以看到最新的帖子ID是3000 如果我这样做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。这很奇怪 但是如果我在这样的数组中指定一
$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类型都可以公开查询。