web-dev-qa-db-fra.com

Ajouter automatiquement le titre, la légende, le texte alternatif, la description lors du téléchargement des images dans WordPress

Quelqu'un peut-il me dire comment remplir/ajouter automatiquement le même titre d'image dans le titre, la légende, le texte de remplacement et la description lors du téléchargement d'une image dans mes publications WordPress.

desired screenshot

7
On Secret Hunt

Vous pouvez vous connecter à l'action 'add_attachment' à partir de la ligne wp-includes/post.php: 3332. (Version 4.4) Il passe dans le post_id et à partir de là, vous pouvez obtenir le nom du fichier, puis mettre à jour le méta de post avec tout ce dont vous avez besoin.

Référence extraite de

add_action( 'add_attachment', 'wpse_125805_add_image_meta_data' );

function wpse_125805_add_image_meta_data( $attachment_ID ) {

    $filename   =   $_REQUEST['name']; // or get_post by ID
    $withoutExt =   preg_replace('/\\.[^.\\s]{3,4}$/', '', $filename);
    $withoutExt =   str_replace(array('-','_'), ' ', $withoutExt);

    $my_post = array(
        'ID'           => $attachment_ID,
        'post_excerpt' => $withoutExt,  // caption
        'post_content' => $withoutExt,  // description
    );
    wp_update_post( $my_post );

    // update alt text for post
    update_post_meta($attachment_ID, '_wp_attachment_image_alt', $withoutExt );
}
2
Webloper

added_post_meta semble être un bon moment pour accrocher une nouvelle image. Non seulement la méta par défaut est déjà définie, mais la fonction vous donne le $post_id avec $meta_value qui contient les métadonnées de la pièce jointe. De là, vous pouvez obtenir tous les champs et définir ceux que vous souhaitez.

add_action('added_post_meta', 'wpse_20151219_after_post_meta', 10, 4);

function wpse_20151219_after_post_meta($meta_id, $post_id, $meta_key, $meta_value) {

    // _wp_attachment_metadata added
    if($meta_key === '_wp_attachment_metadata') {

        // ----------------------------------------------------------------------
        // POST
        // ----------------------------------------------------------------------

        // Change basic fields on attachment post
        wp_update_post(array(
                           'ID'           => $post_id,
                           'post_title'   => "This is a TITLE for $post_id",
                           'post_content' => "This is the DESCRIPTION for $post_id",
                           'post_excerpt' => "This is the CAPTION for $post_id",
                       ));

        // ----------------------------------------------------------------------
        // POST META
        // ----------------------------------------------------------------------

        // Change ALT Text
        update_post_meta($post_id, '_wp_attachment_image_alt', "This is the ALT Text for $post_id");

        // Add Custom Field
        update_post_meta($post_id, '_wpse_20121219_my_custom_meta', 'MyCustomMetaValue');

        // ----------------------------------------------------------------------
        // POST META ( ATTACHMENT METADATA )
        // ----------------------------------------------------------------------

        // Change Image Metadata
        $meta_value[ 'image_meta' ] = array_merge($meta_value[ 'image_meta' ], array(
            'credit'    => 'https://black-buddha.com',
            'camera'    => 'The Best Camera EVER!',
            'copyright' => date('Y'),
            'title'     => "This is a META TITLE for $post_id",
            'caption'   => "This is a META CAPTION for $post_id",
        ));

        // Update The Image Metadata
        wp_update_attachment_metadata($post_id, $meta_value);

        // _wp_attached_file
        // _wp_attachment_metadata (serialized)
        // _wp_attachment_image_alt
        // _wpse_20121219_my_custom_meta

        $attachment_meta = get_post_meta($post_id);

        // width
        // height
        // file
        // sizes
        // image_meta
        //      aperture
        //      credit
        //      camera
        //      caption
        //      created_timestamp
        //      copyright
        //      focal_length
        //      iso
        //      shutter_speed
        //      title
        //      orientation
        //      title
        //      keywords

        $attachment_metadata = wp_get_attachment_metadata($post_id);
    }
}
2
jgraup

Pour une solution plus simple, vous pouvez utiliser le plugin this WordPress que j'ai créé il y a quelque temps.

Le plugin est livré avec un programme de mise à jour en masse qui mettra également à jour les attributs des images déjà présentes dans votre médiathèque, si vous le souhaitez.

1
Arun Basil Lal