最近做一个采集站,入库到wordpress,考虑到后续可能要更新数据,最终选用了文章的别名,也就是post name来做唯一的标志区分。
基本思路是,采集数据时,保留一个源站的唯一标识符,并将这个标识用于或者转化后用于wordpress文章的postname,这样当有数据时,再次采集更新,入库时,先根据标识符查询是否已经入库,如果入库则选择更新原有文章,而不是插入新的文章。结合我开发的wndwp插件,这个功能实现起来超级简单。
回归主题,如何通过文章的别名来获取文章是否存在呢?如果是page页面,wordpress有专门的函数,get_page_by_path,但文章类型并没有,只能自己写个简单的查询函数:
function my_get_post_by_slug ( $slug, $post_type = 'post'){ global $wpdb; $results = $wpdb->get_var($wpdb->prepare( "SELECT ID FROM $wpdb->posts WHERE post_name = %s AND post_type = %s limit 1", $slug, $post_type )); $post_id = $results ? $results : false; return $post_id; }