如何修复在数据库中更新帖子时“\\”字符的消失

时间:2022-01-18 作者:UserUser-name

foreach( $posts as $post ) {
    
                // Search for images and fill the missing dimensions in the current post content
                $post_content = $this->add_image_dimensions( $post->post_content );
    
                // Update the post content in the database only if the new $post_content it is not the same
                // as the current $post->post_content 
                if( $post_content != $post->post_content ) {
    
                    $query = "UPDATE " . $wpdb->prefix . "posts SET post_content = \'" . $post_content . "\' WHERE ID = " . $post->ID;
             
    
                    $wpdb->query( $query );
    
                }
    
                // Add a post meta to the current post to mark it as doone
                update_post_meta( $post->ID, \'image_dimensions_filled\', 1 );
如果有\\ 文字中的字符,然后它就会消失。如何修复它?

这是正确的吗?

...
                if( $post_content != $post->post_content ) {
                 $post_content = wp_slash($post_content);
                    $query = "UPDATE " . $wpdb->prefix . "posts SET post_content = \'" . $post_content . "\' WHERE ID = " . $post->ID;
...
此变体不起作用。

$wpdb->query( $wpdb->prepare( $query ));
对不起,我的英语不好。

1 个回复
SO网友:Bysander

我会使用你的友好邻里WP功能-看-这里有一个!

wp_insert_post()

在您的情况下,它将类似于:

...
$post_content = $this->add_image_dimensions( $post->post_content );

$update_post = wp_insert_post(
    array(
        \'ID\'           => $post->ID,
        \'post_content\' => $post_content,
    )
);

// Don\'t forget error handling
if ( is_wp_error( $update_post ) ) {
    $error_code    = array_key_first( $update_post->errors );
    $error_message = $update_post->errors[ $error_code ][0];
    wp_die( "Post Update Error: Post ID: $post->ID  - $error_message" );
}
...
这将在添加到DB之前正确添加斜杠,以便在读取时正确剥离斜杠。

如果您坚持运行直接查询,prepare your damned write statements!

相关推荐

Reducing Database Query Time

在这里寻找一些建议。有一位客户已经在WooCommerce上工作了大约一年半。我们为他们建了一个新网站。他们开始增加一条新的家具生产线。每个项目有700-800个产品变体组合。由于从生产线中添加了大约8个新产品,当您在管理中查看产品列表时,加载需要花费很长时间。如果您快速编辑一个产品,并说将其添加到第二个类别,然后单击“更新”,则完成查询平均需要10.2-10.8秒(根据查询监视器)。意识到有700-800个变体需要迭代,如果可以理解的话,可能需要更长的时间。我已经恢复到2017主题,禁用了除woocom