无法成功检查数据库中是否存在带有标题的帖子

时间:2019-01-17 作者:Dougless

在WordPress中,我试图从CSV文件导入帖子。我想检查,如果标题的帖子已经存在。我试图使用数据库查询来完成这项工作,但我仍然能够从示例CSV文件中导入相同的三篇文章。

如果已经存在标题为的帖子,我将使用以下PHP代码片段进行检查:

   $check_post_exists = function( $title ) use ( $wpdb, $postTypeArray ) {

        $posts = $wpdb->get_col( "SELECT post_title FROM {$wpdb->posts} WHERE post_type = \'{$postTypeArray["custom-post-type"]}\' AND post_status = \'publish" );

        return in_array( $title, $posts );
    };

    foreach ( $posts() as $post ) {

        if ( $check_post_exists( $post["zoneid"] ) ) {
            continue;
        }

        $post["id"] = wp_insert_post( array(
            "post_title" => $post["zoneid"],
            "post_content" => $post["bemaerkning"],
            "post_type" => $postTypeArray["custom-post-type"],
            "post_status" => "publish"
        ));         
    }
我做错了什么,或者我在这里错过了什么?

1 个回复
最合适的回答,由SO网友:Mohsin Ghouri 整理而成

你打字有误。您在代码末尾使用的是双引号,而不是单引号post_status = \'publish"

请使用post_status = \'publish\' 而不是post_status = \'publish" 然后在查询末尾使用双引号。

还可以通过在执行前打印查询来确保在查询中正确输入动态值。