如果存在具有特定标题的帖子,则更新

时间:2016-06-30 作者:Carol.Kar

我正在尝试创建一个帖子,如果它不存在,并根据其标题更新帖子(如果存在)。标题是唯一的,因为它是用户的用户名。

但是,更新功能不起作用。始终会创建一个新帖子。

以下代码创建并应更新帖子:

<td><input type="submit" class="button button-primary" name="info_update_config" value="Save Changes" /></td>    


    <?php

function wp_exist_post_by_title($title)
{
    global $wpdb;
    $return = $wpdb->get_row("SELECT ID FROM wp_posts WHERE post_title = \'" . $title . "\' && post_status = \'publish\' && post_type = \'post\' ", \'ARRAY_N\');
    if (empty($return)) {
        return false;
    } else {
        return true;
    }
}

if (isset($_POST[\'info_update_config\'])) {

    $current_user = wp_get_current_user();
    $user_id      = get_current_user_id();

    // usage
    if (wp_exist_post_by_title($current_user->user_login)) {

        $id = $wpdb->get_row("SELECT ID FROM wp_posts WHERE post_title = \'" . $title . "\' && post_status = \'publish\' && post_type = \'post\' ", \'ARRAY_N\');

        $my_post = array(
            \'ID\' => $id,
            \'post_title\' => $current_user->user_login,
            \'post_content\' => $current_user->user_email
        );

        // Update the post into the database
        wp_update_post($my_post);

        // save a basic text value
        $field_key = "field_577431181309c";
        $value     = $uids;
        update_field($field_key, $value, $my_post);

    } else {

        $my_post = array(
            \'post_title\' => $current_user->user_login,
            \'post_content\' => $current_user->user_email,
            \'post_status\' => \'draft\',
            \'post_author\' => $user_id
        );

        // Insert the post into the database
        $postID = wp_insert_post($my_post);

        // save a basic text value
        $field_key = "field_577431181309c";
        $value     = $uids;
        update_field($field_key, $value, $postID);
    }
}
//}

?>
有什么建议我做错了什么?

亲切的问候!

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

首先,我会使用WP_Query 而不是手动DB查询(不要告诉我这是因为性能原因,因为您要查询两次相同的内容)。第二,您正在将您的帖子保存为draft 状态和查询状态为的帖子publish

相关推荐

显示作者姓名PHP(自制插件)

我有一个需要帮助的问题,因为我自己找不到解决办法。我接管了一个网站,之前有人在那里创建了一个自制插件。。使用默认插件“Contact Form 7”,用户可以在页面上创建帖子。()https://gyazo.com/c8b20adecacd90fb9bfe72ad2138a980 )关于自行创建的插件“Contact Form 7 extender”,帖子是通过PHP代码在后台生成的(https://gyazo.com/115a6c7c9afafd2970b66fd421ca76a3)其工作原理如下:如果