之所以需要检查文章是否存在,是因为刚实现了一个功能,访问某一个php页面时,利用api获取到一个新闻集锦,然后用php组合数据后自动发布为一篇文章。但是在实际使用中发现,如果多次访问该页面,wordpress每次都会发布一篇同名的文章,显然这里需要一个判断,在发布文章之前,先判断是否有同名文章,如果有,就放弃发布。
如果能获取到所判断的文章的id,显然利用id判断是更便捷的方法,但这里的文章id是发布后根据文章顺序生成的,具体是多少博主自己也无法掌控。因为是新闻类的文章,文章的题目我采用了日期+固定标题(“比如某某新闻”)的形式,相对固定。
wordpress的get_page_by_title函数
函数的字面意思是根据标题获取页面,但不要被字面意思蒙蔽了,实际上它也能够获取到文章函数支持的参数如下:
- $page_title:(字符串,必填)页面标题;
- $output:(string,可选)所需的返回类型,默认值:OBJECT;
- $post_type:(string或array,可选)文章类型或文章类型数组,默认值:'page'。
语法实例:
get_page_by_title('World Peace Now', OBJECT, 'post');
首先尝试了一下这样的方式,结果函数始终都有返回,所以判定结果也一直成立:
if(get_page_by_title( '22-04-28 xx新闻', OBJECT, 'post' ));
于是考虑判断该返回对象中是否包含某一个值,虽然前面没有用上ID,在判断的时候总算把这个戏份给补足了:
<?php
$post_s = get_page_by_title( '22-04-28 xx新闻', OBJECT, 'post' );
if($post_s -> ID){
echo $post_s -> ID;
}else{
echo 'no this post';
};
?>
上面的语句实现了这样一个效果,判断是否有包含这个标题的文章,如果有则输出文章的ID,如果没有,则输出已个“no this post”。