web-dev-qa-db-fra.com

Ajoutez l'URL du champ personnalisé en tant qu '"Image en vedette". Le code ne fonctionne pas

J'essaie de migrer un site vers WP. Nous avons toute une série de photos, et j’ai fait quelques recherches et estimé, je pense, que mon meilleur choix est une importation CSV des données, stockant l’URL relative de l’image en tant que champ personnalisé.

Alors, j’ai trouvé ceci --qu’il semble idéal - et je l’ai implémenté ainsi (dans functions.php avec un appel global ajouté car j’obtenais un erreur 'no object'):

function store_cf_featured_image() {
global $post,$wpdb;

$uploads = wp_upload_dir();

// Get all attachment IDs and filenames
$results = $wpdb->get_results("SELECT post_id, meta_value FROM $wpdb->postmeta WHERE meta_key = '_wp_attached_file'");

// Create an 'index' of attachment IDs and their filenames
$attachments = array();
foreach ($results as $row)
    $attachments[ intval($row->post_id) ] = $row->meta_value;

// Get all featured images
$images = $wpdb->get_results("SELECT post_id, meta_value AS 'url' FROM $wpdb->postmeta WHERE meta_key = 'featured_image'");

// Loop over each image and try and find attachment post
foreach ($images as $image) {
    if (preg_match('#^https?://#', $image->url))
        $image->url = str_replace($uploads['baseurl'], '', $image->url); // get relative URL if absolute

    $filename = ltrim($image->url, '/');

    if ($attachment_ID = array_search($filename, $attachments)) {
        // found attachment, set post thumbnail and delete featured image
        update_post_meta($image->post_id, '_thumbnail_id', $attachment_ID);
        delete_post_meta($image->post_ID, 'featured_image');
    }


}


}

add_action( 'init', 'store_cf_featured_image' );

Cependant, lorsque je mets un lien dans mon champ personnalisé 'Feature_image', et le sauvegarde ... rien. Pas d'erreur, mais rien. Je mets à jour le message et j'y reviens, mais le lien n'est toujours qu'un lien dans le champ personnalisé et aucune "image sélectionnée" n'a été définie.

Quelqu'un a-t-il une idée du problème? ai-je raison de penser que cette image sera stockée dans le cadre de la "bibliothèque multimédia" intégrée?

De plus, pourrai-je adapter ce code pour extraire du texte alternatif, etc. pour chaque image à partir de champs personnalisés.

Toute entrée grandement appréciée! Merci.

1
josh

de sorte que vos images sont déjà dans un champ personnalisé?

vous pouvez utiliser le plug-in Obtenir l'image .... Je sais que votre vignette sera extraite d'un champ personnalisé et que je pense qu'elle pourrait automatiquement la définir en tant qu'image sélectionnée. Cela fait longtemps et je ne suis pas sûr de cela.
http://wordpress.org/extend/plugins/get-the-image/

3
helgatheviking