私はWordPressのデフォルトのギャラリーを使い、それらにカテゴリを追加しています。ギャラリーをページにするためのループ付きのショートコードを作成しました。
if(! function_exists('test_shortcode')){
function lv_gallery_style_one_shortcode($atts, $content = null){
extract(shortcode_atts( array(
'title'=>'',
), $atts) );
$port=array('post_type' => 'gallery', 'category_name' => 'beach', 'showposts' => -1 );
$loop=new WP_Query($port);
while ( $loop->have_posts() ) : $loop->the_post();
// HERE IS THE LOOP
return $html;
}
add_shortcode('gallery_test', 'test_shortcode' );
'category_name' => 'beach'
を削除するとすべてのカテゴリが表示されるので、ループはうまく機能したことを私は知っています。
--------------- 編集: -----------------
私が使用しているギャラリーには、次のアイコンとオプションがあります。
これは標準的なWPギャラリーだと思いました、私は間違っていますか?
新しいギャラリーを作成すると、右側にカテゴリセクションがあります。
使用できない場合、これは何に使用されますか?わかりません。
--------------- 編集終了: -------------
これは単なるサンプルコードです。完全版では、カテゴリ名はショートコードで入力するためのパラメータになります、それで私はこのようにそれをやりたいのです。
これを機能させる方法についてのアイデアはありますか?
任意の提案は大歓迎です:)。
ありがとう。
私の疑いは、それらのGallery Categories
はcategory
分類法ではないということです。それらはおそらくギャラリーの投稿タイプを追加したのと同じスクリプトによって登録された、登録された分類法です。
調べるには、(提供されている画像の)Gallery Categories
をクリックすると、次のようなURLにリダイレクトされます。
http://example.com/wp-admin/edit-tags.php?taxonomy=my-taxonomy&post_type=gallery
taxonomy
引数を確認してください。もしそれがcategory
以外であれば、あなたはカスタム分類法に従っているので、あなたはあなたのtax_query
にWP_Query
を加える必要があります。これを行う方法は次のとおりです。
あなたの引数は単にこれから変わるでしょう:
$port=array('post_type' => 'gallery', 'category_name' => 'beach', 'showposts' => -1 );
これに:
$port = array(
'post_type' => 'gallery',
'showposts' => -1,
'tax_query' => array (
array(
'taxonomy' => 'my-taxonomy',
'field' => 'slug',
'terms' => 'beach',
)
)
);
return $html;
の直前にwp_reset_postdata();
を使用してください。これによりクエリがリセットされ、ショートコードがページ内の他のクエリに影響しないようになります。
全部できた。
あなたの質問から、私はあなたが標準のWordPressインストールで作業していることを理解しています。これは 'gallery'と呼ばれるpost-type
がないことを意味します 。あなた(またはプラグイン)がそれを作成したのであれば、 これは完全に可能です その場合、何が起こっているのか、あるいはどのようにしてコードを構築すればよいのかわかりません。
ショートコードを作成したいという事実から、通常の投稿またはページに画像を挿入することをお勧めしますが、 デフォルトのgallery-shortcode のように画像を一覧表示する代わりに、 categoryとWPは、特定のラベルの画像を挿入する必要があります。
まず、今すぐあなたのコードで何が起こっているのか理解しよう。 wp_queryの仕様からわかるように、 デフォルトのpost_type
は 'post' です。ですから、ギャラリーのように存在しないpost_type
を使うのであれば、代わりに 'post'を使います。しかし、 デフォルトのカテゴリはありません 。したがって、存在しないcategory_name
を指定した場合、クエリはゼロの結果を返します。
次に、WPがメディアを処理する方法を見てみましょう。すべての画像は「添付ファイル」タイプの投稿として保存されます。その投稿はIDを持っています。デフォルトのギャラリーのショートコードは基本的にIDのリストです。残念ながら、あなたが画像をアップロードするとき、それをカテゴリにする可能性はありません。そのため、カテゴリ別に画像を検索することはできません。しかし、これは 簡単に修正することができます :
function wpse295373_add_categories_to_attachments() {
register_taxonomy_for_object_type ('category', 'attachment');
}
add_action ('init', 'wpse295373_add_categories_to_attachments');
アップロードした画像にカテゴリを付けることができます。それで、あなたはあなたのショートコードでそれらを検索するためにカテゴリを使うこともできます:
$port=array('post_type' => 'attachment', 'category_name' => 'beach', 'showposts' => -1 );
これは、ビーチカテゴリのすべての画像を返すはずです。
さて、あなたの質問から、これがあなたが望むものであるかどうかは不確実です。おそらくあなたはあなたが検索したい画像のギャラリーを持っているということです。したがって、カテゴリ「beach」には「スペイン」というギャラリーがあり、5つの画像、「フランス」というギャラリーがあります。それがあなたが望むものであれば、あなたは確かにあなた自身のpost_type
を作成しなければならないでしょう。