Lỗi không Update Meta_Value Khi thay thế hình ảnh cũ bằng hình ảnh mới trong WordPress

Mã dưới đây hoạt động tốt có 1 lỗi không update được postmeta ” meta_key=_thumbnail_id và meta_value=id tại sao ? 2 dòng dưới không thấy update //UPDATE meta_value // Finally! set our post thumbnail <?php class Auto_Save_Images_local { function __construct() { add_filter( 'content_save_pre', array( $this, 'post_save_images' ) ); } function post_save_images( $content ) { if

Mã dưới đây hoạt động tốt có 1 lỗi không update được postmeta ” meta_key=_thumbnail_id và meta_value=id tại sao ?

2 dòng dưới không thấy update

//UPDATE meta_value

// Finally! set our post thumbnail

<?php

class Auto_Save_Images_local {
    function __construct()
    {
        add_filter( 'content_save_pre', array( $this, 'post_save_images' ) );
    }
    function post_save_images( $content )
    {
        if ( ( isset( $_POST['save'] ) || isset( $_POST['publish'] ) ) ) {
            set_time_limit( 240 );
            global $wpdb, $post;
            $post_id = $post->ID;
            $preg = preg_match_all( '/<img.*?src="(.*?)"/', stripslashes( $content ), $matches );
            if ( $preg ) {
                foreach ( $matches[1] as $image_url ) {
                    if ( empty( $image_url ) ) continue;
                    if ( get_option( 'upload_url_path' ) ) {
                        $checkdomain = @parse_url( get_option( 'upload_url_path' ) );
                        $domain = isset( $checkdomain['host'] ) ? $checkdomain['host'] : '' . $_SERVER['HTTP_HOST'] . '';
                    } else {
                        $domain = $_SERVER['HTTP_HOST'];
                    }
                 
                    $pos = !empty( $domain ) && strpos( $image_url, $domain ) ? strpos( $image_url, $domain ) : FALSE;
                    if  ($pos === FALSE ) {
                        //LINK NGOAI
                        //$res = $this->save_images( $image_url, $post_id );
                        //$replace = $res['url'];
                        //$content = str_replace( $image_url, $replace, $content );
                    } else {
                        //LINK TRONG
                        //Get the name file
                        $info_file = pathinfo( $image_url );
                        if ( $info_file['extension'] === "webp" ) continue;
                     
 
                        $image_url_old = $image_url;
                        $res = $this->save_images( $image_url, $post_id );
                        $replace = $res['url'];
                        $content = str_replace( $image_url, $replace, $content );

                        $thumb_attach_id = attachment_url_to_postid( $image_url );
                       
                       //UPDATE meta_value không thấy update
                        $wpdb->query(
                            "UPDATE $wpdb->postmeta
                            SET meta_value = $thumb_attach_id
                            WHERE post_id = $post_id AND meta_key = '_thumbnail_id' AND meta_value <> '0'"
                        );
                      
                    }
                }
            }
        }
        remove_filter( 'content_save_pre', array( $this, 'post_save_images' ) );
        return $content;
    }
    
    function save_images( $image_url, $post_id )
    {
        $stream_opts = [
            "ssl" => [
                "verify_peer" => false,
                "verify_peer_name" => false,
                "ciphers" => "DEFAULT:!DH",
            ]
        ];

        $file = file_get_contents( $image_url, false, stream_context_create( $stream_opts )  );
        $set_ext_image = '.webp';

        $post = get_post( $post_id );
        $posttitle = $post->post_title;
        $postname = sanitize_title( $posttitle );
        //$im_name = "$postname-$post_id.jpg"; 
        $im_name = "$postname-$post_id". $set_ext_image; 
        $res = wp_upload_bits( $im_name, '', $file );
        $this->insert_attachment( $res['file'], $post_id );
        return $res;
    }
    function insert_attachment( $filename, $post_id )
    {
        // the file must be in the WP uploads directory. // tệp phải nằm trong thư mục tải lên WP.
        //$filename = '/path/to/uploads/2013/03/filname.jpg';

        // Get the path to the uploads directory. // Lấy đường dẫn đến thư mục uploads.
        $dirs = wp_upload_dir();

        // the ID of the post to which we are attaching. // ID của bài đăng mà chúng tôi đang đính kèm.
        //$parent_post_id = $post_id;

        // Check the post type that we use in the 'post_mime_type' field. // Kiểm tra loại bài đăng mà chúng tôi sử dụng trong trường 'post_mime_type'.
        $filetype = wp_check_filetype( basename( $filename ), null );
 
        $post = get_post( $post_id );
        $posttitle = $post->post_title;

        if ( isset( $posttitle ) ) {
            $attachment = array(
                //'guid'           => $wp_upload_dir['url'] . '/' . basename( $filename ), 
                'guid' => $dirs['baseurl'] . '/' . _wp_relative_upload_path( $filename ),
                'post_mime_type' => $filetype['type'],
                'post_title'   => sanitize_text_field( $posttitle ), //sanitize_text_field( $title ),
                'post_excerpt' => sanitize_text_field( $posttitle ), //sanitize_text_field( $caption ),
                'post_content' => sanitize_text_field( $posttitle  ), //sanitize_text_field( $description ),
                'post_status'  => 'inherit'
            );

        } else {
            $attachment = array(
                //'guid'           => $wp_upload_dir['url'] . '/' . basename( $filename ), 
                'guid' => $dirs['baseurl'] . '/' . _wp_relative_upload_path( $filename ),
                'post_mime_type' => $filetype['type'],
                'post_title' => preg_replace( '/.[^.]+$/', '', basename( $filename ) ),
                'post_excerpt' => preg_replace( '/.[^.]+$/', '', basename( $filename ) ),
                'post_content' => preg_replace( '/.[^.]+$/', '', basename( $filename ) ),
                'post_status' => 'inherit'
            );

        }

        // Insert the attachment into the database. // Chèn tệp đính kèm vào cơ sở dữ liệu.
        $attach_id = wp_insert_attachment( $attachment, $filename, $post_id ); // $thumb_id = $attach_id

        //require_once( ABSPATH . 'wp-admin/includes/image.php' );

        $attach_data = wp_generate_attachment_metadata( $attach_id, $filename ); // $metadata = $attach_dat
        wp_update_attachment_metadata( $attach_id, $attach_data );

        // Finally! set our post thumbnail
        //update_post_meta( $post_id, '_thumbnail_id', $attach_id ); // KO THAY UPDATE
 

        return $attach_id;
    }
}
new Auto_Save_Images_local();

Nguồn: viblo.asia

Bài viết liên quan

Thay đổi Package Name của Android Studio dể dàng với plugin APR

Nếu bạn đang gặp khó khăn hoặc bế tắc trong việc thay đổi package name trong And

Bài 1 – React Native DevOps các khái niệm và các cài đặt căn bản

Hướng dẫn setup jenkins agent để bắt đầu build mobile bằng jenkins cho devloper an t

Chuyển đổi từ monolith sang microservices qua ví dụ

1. Why microservices? Microservices là kiến trúc hệ thống phần mềm hướng dịch vụ,

SQL injection vulnerabilities (Phần 1)

I. Đặt vấn đề 1. Giới thiệu Một vấn đề lớn mà mỗi một hệ thống cần p