web-dev-qa-db-ja.com

添付ファイル投稿へのメタデータの追加

添付ファイルの投稿にメタデータを追加したいので、後でメタ値順に並べ替えます。そのメタ値は「価格」になります。

だから私はこれがうまくいくと思いました:

私はこの引数を持っています:

$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)で投稿(添付ファイルの投稿)を取得します。

それから、各添付ファイルの投稿に、 'price'というメタデータを追加したいと思います。この値はget_post_meta($ post-> ID、 'key'、true)['price'];によって得られます。

だから私はこれがメタデータを追加する仕事をするだろうと思った:

foreach($att_posts as $att){

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

}

だから私は再び他の引数を宣言したが、今度は 'meta_value_num'で、メタキーは 'price'で注文する。

しかし、うまくいきませんでした。

それを可能にする簡単な方法を知っている人はいますか?任意のヒント?

ありがとう。

編集:

添付ファイルの画像を '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>';

}

しかし、まだうまくいきません。

別の質問方法は次のとおりです。添付ファイルの投稿にメタデータを追加する方法を教えてください。そして後で、「price」と呼ばれるこのメタデータによって順序付けられた添付ファイルの投稿を取得します。

この目的は、安いものから高いものへと価格順に並べられた画像を含む投稿のページリストを表示することです。

これは、Webサイトの1ページへの送信ボタンによって呼び出されます。

1
Marcelo Noronha

attachmentsは投稿タイプなので、他の投稿タイプと同様にpostmetaを割り当てることができるはずです。

update_post_meta関数を使用すると、必要な場所にアクセスできます。

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

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

その後、メタキーに基づいてクエリを実行します。

$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