web-dev-qa-db-fra.com

Ajout de métadonnées à une publication en pièce jointe

Je souhaite ajouter une métadonnée à mes publications en pièce jointe, afin de pouvoir les classer par valeur méta ultérieurement. Cette méta-valeur serait "prix".

Alors j'ai pensé que cela pourrait fonctionner:

J'ai ces arguments:

$args = array(
'order'          => 'ASC',
'post_type'      => 'attachment',
'post_parent'    => $post->ID,
'post_mime_type' => 'image',
'post_status'    => null,
'numberposts'    => -1,
);

Ensuite, je reçois des messages (pièces jointes) avec $ att_posts = get_posts ($ args);

Ensuite, j'aimerais ajouter à chaque message joint, une méta-donnée appelée "prix", valeur que je reçois par get_post_meta ($ post-> ID, "clé", true) ["prix"] ;.

J'ai donc pensé que cela ferait le travail d'ajouter les métadonnées:

foreach($att_posts as $att){

wp_update_attachment_metadata( $att->ID, array("price"=>get_post_meta($post->ID, 'key',    
true)['price'])));

}

J'ai donc déclaré d'autres arguments à nouveau, mais cette fois-ci sur ordre de 'meta_value_num', avec la méta-clé 'price'.

Mais ça n'a pas marché.

Tout organisme connaît un moyen simple de rendre cela possible? Des conseils?

Merci.

MODIFIER:

Voici tout mon code pour obtenir des images de pièces jointes commandées par 'meta_key' 'price'.

$args = array(
'order'          => 'ASC',

'post_type'      => 'attachment',
'post_parent'    => $post->ID,
'post_mime_type' => 'image',
'post_status'    => null,
'numberposts'    => -1,
);


$att_posts = get_posts($args);

if ($att_posts) {
    foreach( $att_posts as $att ) {
        wp_update_attachment_metadata( $att->ID, array( 'price' => get_post_meta( 
$post->ID, 'price', true ) ) );
    }
}




$args = array(
'order'          => 'ASC',
'orderby'       =>'meta_value_num',
'meta_key'      =>'price',
'post_type'      => 'attachment',
'post_parent'    => $post->ID,
'post_mime_type' => 'image',
'post_status'    => null,
'numberposts'    => -1,
);



$attachments = get_posts($args);
if ($attachments) {
    foreach ($attachments as $attachment) {




    echo '<a href='.$surl.'/'.$post->post_name.'>'.wp_get_attachment_image($attachment-
>ID, 'thumbnail_large').'</a>';
    }
}else{ 
     echo '<a href='.$surl.'/'.$post->post_name.'>'.'<div class=\'thumbnail-small-img-   
search\'></div>'.'</a>';

}

Mais ça ne marche toujours pas.

Une autre façon de demander est la suivante: comment puis-je ajouter des métadonnées aux publications en pièce jointe? Et plus tard, obtenez les messages de pièce jointe commandés par cette méta-donnée appelée "prix".

L'objectif est d'afficher une liste paginée de messages avec des images classées par prix du moins cher au plus cher.

Ceci serait invoqué par un bouton d'envoi sur une page du site.

1
Marcelo Noronha

Donc, puisque attachments sont des types de publication, vous devriez pouvoir les affecter postmeta comme tout autre type de publication.

L'utilisation de la fonction update_post_meta devrait vous mener là où vous devez être.

update_post_meta( $attachment_id, 'price', $price );

http://codex.wordpress.org/Function_Reference/update_post_meta

Ensuite, exécutez votre requête basée sur une clé méta.

$args = array(
'order'          => 'ASC',

'post_type'      => 'attachment',
'post_parent'    => $post->ID,
'post_mime_type' => 'image',
'post_status'    => null,
'numberposts'    => -1,

'meta_key'       => 'price',
);

http://codex.wordpress.org/Template_Tags/get_posts#Parameters

4
Daron Spence