2

カスタム ビルド サイトから移行したばかりです。自分が何をしているのかよくわからなかったので、featured_image というカスタム フィールドを作成し、各投稿の画像への URL を入れました。

今。

すべての投稿をループして、カスタム フィールドの URL からサムネイル/注目の画像を生成する方法はありますか?

それが理にかなっていることを願っています!

より詳しい情報。

7000 件の投稿を移動しました。各投稿には、画像への単一の URL を持つカスタム フィールドがあります。これらの URL を取得して、関連する投稿の注目の画像にしたいと思います。

投稿の最初の画像を取得して再公開できるプラグインがありますが、7000 では実用的ではない可能性があります。

ありがとう

4

2 に答える 2

2

わかりました、別のプラグインをハッキングして答えを見つけました。

まず、postmeta テーブルをループします

$postid_list = $wpdb->get_results("SELECT distinct post_id FROM yars_postmeta WHERE meta_key='featured_image' ORDER BY post_id DESC LIMIT 10");
        if (!$postid_list){
                die('No posts with images were found.');
        }
        foreach ($postid_list as $v) {
            $post_id = $v->post_id;
            //$options['url_method'] = $url_method;
            echo fig_fetch_images($post_id).'<br/>';
        }

次に、関数で画像を取得してメディアライブラリにアップロードし、投稿IDの注目の画像を設定します

function fig_fetch_images( $post_id ) { 
global $wpdb;
//Check to make sure function is not executed more than once on save

if ( defined('DOING_AUTOSAVE') && DOING_AUTOSAVE ) 
return;

if ( !current_user_can('edit_post', $post_id) ) 
return;

remove_action('publish_post', 'fetch_images');  

//$post = get_post($post_id);   
$first_image = '';
$key = 'featured_image';
$first_image = get_post_meta($post_id, $key, true);
$wpdb->query("update yars_postmeta set meta_key ='featured_image_uploaded'WHERE meta_key='featured_image' AND post_id=".$post_id);

if (strpos($first_image,$_SERVER['HTTP_HOST'])===false) {

    //Fetch and Store the Image 

    $get = wp_remote_get( $first_image );

    $type = wp_remote_retrieve_header( $get, 'content-type' );

    $mirror = wp_upload_bits(rawurldecode(basename( $first_image )), '', wp_remote_retrieve_body( $get ) );


    //Attachment options

    $attachment = array(

    'post_title'=> basename( $first_image ),

    'post_mime_type' => $type

    );

    // Add the image to your media library and set as featured image

    $attach_id = wp_insert_attachment( $attachment, $mirror['file'], $post_id );

    $attach_data = wp_generate_attachment_metadata( $attach_id, $first_image );

    wp_update_attachment_metadata( $attach_id, $attach_data );

    set_post_thumbnail( $post_id, $attach_id );


    // re-hook this function

    add_action('publish_post', 'fetch_images');     

}
return ('Done post '. $post_id .' : '. $first_image);

}

元のプラグインは Hotlink Image Cacher でした。

于 2013-05-20T10:03:32.280 に答える
0

もっと説明したほうがいいと思います。single.php のループ内に、カスタム フィールドを HTML イメージ タグとして返す関数がありますか? その場合、投稿の最初の画像または任意のカスタム投稿タイプから投稿サムネイル (おすすめのサムネイル) を自動的に生成するプラグインがあります。

次に、サイトにまだ投稿があまりない場合は、テキスト カスタム フィールド (画像の URL を含む) を追加することは最善の方法ではないと思います。アイキャッチ画像フィールドでは十分ではありません。

しかし、最初に私たちに答えてください。サムネイルをどこで、どのように使用しますか?? (コードを使用して詳細を説明します)。コミュニティからより多くの助けが得られるようになるとより良いでしょう。

幸運を祈ります

于 2013-05-20T00:23:00.463 に答える