web-dev-qa-db-ja.com

メディアギャラリーの画像のサブセットからランダムな画像を取得する方法

カスタム投稿におすすめの画像がない場合は、おすすめの画像の代わりにメディアライブラリから画像を取得して使用します。これらの特定の画像は特定の投稿に添付されることはなく、投稿がない場合には注目の画像の代わりに使用されます。私はメディアライブラリから画像を取得したくはありません。タグ付けしたものだけを取得します。

私はそれをハードコードされた画像のセット(アップロードディレクトリにftpしたもの)を使って動作させています。しかし、メディアライブラリに画像を追加して、それらがデフォルトの画像として使用するためのものであることを「タグ付け」する機能が欲しいのです。アップロードされた画像にはカテゴリ/タグ/分類法がないように思われるので、この機能を得るための最善の解決策は何でしょうか。

私が考えることができる唯一のことはページを作成し、そのページにすべての私の "デフォルトの画像"をアップロードすることです。そのページに添付されているすべての画像を検索して、ランダムな画像を使用するだけです。画像を分類するために無駄なページを作成するよりも、もっと良い方法があるはずです。

2
bassfan

メディアライブラリで分類法を使用することができます、あなたはただ内蔵分類法を追加するか、または 新しいものを登録する必要があります .

たとえば、添付ファイルに組み込みのタグ付け後分類法を追加します。

function wpd_attachment_taxonomy() {
    register_taxonomy_for_object_type( 'post_tag', 'attachment' );
}
add_action( 'init', 'wpd_attachment_taxonomy' );

特定のタグを使って画像を検索することができます。

$args = array(
    'post_type' => 'attachment',
    'post_status' => 'inherit',
    'tag' => 'tagged',
    'posts_per_page' => 1,
    'fields' => 'ids',
    'orderby' => 'Rand'
);

$image = new WP_Query( $args );

if( $image->have_posts() ){
    $image_attributes = wp_get_attachment_image_src( $image->posts[0], 'full' );
    echo $image_attributes[0];
}

選択したタグのスラッグがなんであれ、taggedを変更します。これはあなたのタグを持つ1つのランダムな画像の添付ファイルIDを取得します。そのIDを使用して添付ファイルの画像属性を取得できます。

4
Milo