将简单的SQL查询转换为WordPress查询

时间:2015-07-27 作者:Jonirish

我正在尝试“批量”更新wp\\u posts表中我的post\\u父字段中的值。我可以使用以下SQL查询在phpmyadmin中执行此操作:

UPDATE wp_posts SET post_parent = \'8\' WHERE post_type = \'the_name_of_my_post-type_here\';
但我无法从wordpress内部实现它。

有什么想法吗?

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

您需要的功能是wp_update_post().

您可能希望有您想要更新的帖子,然后设置一个循环来分别更新每个帖子。

// However you get your posts, ID\'s, etc.
$posts = get_posts( array( \'post_type\' => \'post\' ) );

for ( $posts as $post ) {
    wp_update_post( array( \'ID\' => $post->ID, \'post_parent\' => 8 ) );
}
对于一般的SQL调用,请查看$wpdb 对象preparequery 功能:

global $wpdb;

$query = $wpdb->prepare( \'UPDATE wp_posts SET post_parent = %d WHERE post_type = %s\', 8, \'my-post-type\' );

$wpdb->query( $query );
你也可以调查$wpdb->update - 它将来可能更适合你的需要。

结束

相关推荐

$wpdb returns duplicate posts

我创建了一个短代码,显示用户上次登录后创建的帖子。这个短代码工作得很好,但我不知道为什么,但我得到了7个重复的帖子。就像测试一样,我创建了一个名为“示例文章”的帖子,当我呼出帖子的标题时,我得到了这个结果。Sample Article Sample Article Sample Article Sample Article Sample Article Sample Article Sample Article Sample ArticleShortcodefunction latest_posts_af