检查职称帖子是否已存在

时间:2012-11-15 作者:rogy

我正在编写一个插件,它接受xml提要并使用wp cron将其发布到WordPress中

一切都很顺利,只是它不断地重复添加相同的帖子。

所以,我正在开发一个系统,以检查是否已经存在具有该标题的帖子。

我写过这个,但它总是返回“已经存在”

global $wpdb;
        $query = $wpdb->prepare(\'SELECT ID FROM \' . $wpdb->posts . \' WHERE post_title = %s\', $article->heading);
        $wpdb->query( $query );

        if ( $wpdb->num_rows ) {
            error_log(\'already exists\');
        } else {                
            wp_insert_post($post, $wp_error);
        }
我是WordPress数据库方面的新手,我看到了$wpdb 当谷歌搜索帮助时。现在,我还没有在任何地方定义它,但我读到的地方似乎表明它是内置的。

感谢所有帮助!

谢谢

2 个回复
最合适的回答,由SO网友:s_ha_dum 整理而成

$wpdb 内置,在每次页面加载时由WordPress核心加载。

我认为您的代码没有任何关键问题。我将提出一些改进建议,因为我看到了一些可能出错的地方,但大多数情况下应该是可行的。这让我觉得$article->heading 与插入的不匹配post_title. 所以

尝试使用sanitize_title_with_dashes 这就是WordPress构建post段塞的方式,然后检查该段塞。

global $wpdb;
        $query = $wpdb->prepare(\'SELECT ID FROM \' . $wpdb->posts . \' WHERE post_name = %s\', sanitize_title_with_dashes($article->heading));
        $cID = $wpdb->get_var( $query );
现在您的查询正在查找post_name, 哪一个是鼻涕虫或permalink尾巴,我改变了$wpdb->query$wpdb->get_var 因为您正在查找单个变量,我们将其保存到$cID.

使用更好的检查条件。

if ( !empty($cID) ) {

然而,这可能根本不是正确的方法。查看@kaiser提到的XML\\u RPC API。它有post insertion capabilities.

SO网友:Altef four
结束