2017-05-04 11 views
0

アップロードフォルダ(2017)からすべての画像を削除しましたが、ホームページと記事ページの2017(削除画像)のすべての投稿の画像リンクが壊れています。だから、どのようにフロントエンドからすべての壊れた画像フレームを削除することが可能でしょうか?すべての空の画像リンクをWordpressから削除します

enter image description here

enter image description here

+0

wp-uploads/2017フォルダのチェックに画像がある場合は、スクリプトを作成する必要があります。画像が見つからない場合、その投稿コンテンツから削除します。 –

+0

@Faysal Mahamud、ええ、それは本当です。私はスクリプトが必要です。誰かがそれを手伝うことができるかどうかを探しています。 –

+0

しばらくお待ちください。 :) –

答えて

0

コードがテストされ、正常に動作しているのfunctions.phpに

を次のコードを追加します。

function get_post_images_from_body(){ 
    // get all post from post type. 
    $posts = get_posts(array('post_type' => 'post')); 

    $post_images = array(); 

    foreach($posts as $post){ 

    $szSearchPattern = '~<img [^\>]*\ />~'; 

    preg_match_all($szSearchPattern, $post->post_content, $images); 

    $iNumberOfPics = count($images[0]); 

    if ($iNumberOfPics > 0) { 

     for ($i=0; $i < $iNumberOfPics ; $i++) { 
      $post_images[$post->ID] = $images[0]; 
    }; 

    } 

    } 

    return $post_images; 

} 

function attachment_id($image_url) { 
    global $wpdb; 

    $attachment_id = $wpdb->get_var($wpdb->prepare("SELECT wposts.ID FROM $wpdb->posts wposts, $wpdb->postmeta wpostmeta WHERE wposts.ID = wpostmeta.post_id AND wpostmeta.meta_key = '_wp_attached_file' AND wpostmeta.meta_value = '%s' AND wposts.post_type = 'attachment'", $image_url)); 

    return $attachment_id; 
} 

function update_post_content($id,$content){ 
    $my_post = array(
     'ID'   => $id, 
     'post_content' => $content, 
); 
// Update the post into the database 
    wp_update_post($my_post); 
} 


$post_images = get_post_images_from_body(); 
foreach($post_images as $key => $value){ 
    preg_match('/<img(.*)src(.*)=(.*)"(.*)"/U', $value[0], $result); 
    $image_src = array_pop($result); 
    $file_path = $image_src; 
    $file_name = basename($image_src); 

    $post = get_post($key); 
    $content = preg_replace("/<img[^>]+\>/i", " ", $post->post_content); 
    update_post_content($key,$content); 

    //if you want to delete attachment id which is associated with post, comment out the following code. 
    // 
    // $id = attachment_id($file_path); 
    // if(!empty($id)){ 
    // wp_delete_attachment($id); 
    // } 

} 
+0

あなたの努力のおかげで@Faysal Mahamudが残念ながら、私はfunctions.phpでスクリプトを追加した後に変更が見られませんでした。さらに、すべての投稿のコンテンツからすべての画像を削除しますか? 2015年6月30日から2015年6月30日までの特定の期間について確認することはできますか(写真には空のフレームやおすすめ画像が表示されないようにする必要があります。 )。ありがとう –

+0

ここに少し間違いがあります。私は、wp-uploadsフォルダのディレクトリに画像が存在するかどうかチェックすることを忘れてしまいます。その理由は、投稿コンテンツのすべての画像を削除します。それは1行の変更です。注目の画像については、あなたはその質問に言及しなかった。オキー、私はポストイメージと特色のあるイメージで私の答えを更新します。数分待ちます。ありがとう –

+0

私はコードを更新した後、私に教えてください。 –

関連する問題