カスタム分類WP_Queryすべての条件に分類?
質問
あかかわらず、全てのクエリーのための他の投稿はタグ付きず期から、特定の分類基準?
この技術:
$custom_taxonomy_query = new WP_Query(
array(
'taxonomy_name' => 'term_slug',
)
);
いつづけたいと思っていますかパスワイルドカードのterm_slug、そしておそらくちょうど、空の文字列が返されます。そのうえ投稿タグ付きず期に分類だけでなく、特定の期間。
コ皆さまのご協力のもと、 Dave
解決
振り返ってみると、MikesChinkelとT31OSの提案のマッシュアップを行いました。それをその場で既存のクエリに注入することは可能ですが、WordPress 3.1が必要です。
他のヒント
私は同様の状況のデイブに遭遇しました。このコードは私の目的のためにトリックをしました。それは世界で最も無駄のない選択肢ではありませんが、それはうまく仕事をします:
// Get all term ID's in a given taxonomy
$taxonomy = 'taxonomy_name';
$taxonomy_terms = get_terms( $taxonomy, array(
'hide_empty' => 0,
'fields' => 'ids'
) );
// Use the new tax_query WP_Query argument (as of 3.1)
$taxonomy_query = new WP_Query( array(
'tax_query' => array(
array(
'taxonomy' => $taxonomy,
'field' => 'id',
'terms' => $taxonomy_terms,
),
),
) );
うまくいけば、これがあなたや他の誰かが問題を経験しているのに役立つことを願っています。
ケビン
このようなことはうまくいくかもしれません:
$args = array( 'post_type' => 'post', 'tax_query' => array( array( 'taxonomy' => 'your_custom_taxonomy', 'operator' => 'EXISTS' ), ), ); $query = new WP_Query( $args );
基本的に、your_custom_taxonomy内の用語に割り当てられた投稿を求めています。
こんにちは @デイブ-モリス:
しかし、WordPressを決定しなければい期れんを無視する為分類.
があり 3本組 きみ:
利用の完全なSQLクエリー と
$wpdb->get_results()
,の一覧を取得し
$post->ID
s すべての投稿に分類基準をパスしている'post__id'
引数に注釈を付けるSQLを使用する
WP_Query
のフックをしましょうを追加したり、SQLINNER JOIN
参照の分類基準です。
私はしないようにして完全なSQLはやりのWordPressでいるかどうかわからないでください戻しリストのIdを持っています。この場合いを避け引きの一覧 $post-ID
s用 'post__id'
引数で走りきることができ換性の問題もメモリーの問題だったんです。 うにいってしまった#3.
私のクラスを拡張 WP_Query
という PostsByTaxonomy
を使用する 'posts_join
'フック。ことができま
class PostsByTaxonomy extends WP_Query {
var $posts_by_taxonomy;
var $taxonomy;
function __construct($args=array()) {
add_filter('posts_join',array(&$this,'posts_join'),10,2);
$this->posts_by_taxonomy = true;
$this->taxonomy = $args['taxonomy'];
unset($args['taxonomy']);
parent::query($args);
}
function posts_join($join,$query) {
if (isset($query->posts_by_taxonomy)) {
global $wpdb;
$join .=<<<SQL
INNER JOIN {$wpdb->term_relationships} ON {$wpdb->term_relationships}.object_id={$wpdb->posts}.ID
INNER JOIN {$wpdb->term_taxonomy} ON {$wpdb->term_taxonomy}.term_taxonomy_id={$wpdb->term_relationships}.term_taxonomy_id
AND {$wpdb->term_taxonomy}.taxonomy='{$this->taxonomy}'
SQL;
}
return $join;
}
}
呼び出すとよいでしょうこのクラスとしてば下記を参照してください。 この引数 'taxonomy'
が必要 ものを渡すことができず (?) その他のパラメータ WP_Query
期待など 'posts_per_page'
:
$query = new PostsByTaxonomy(array(
'taxonomy' => 'category',
'posts_per_page' => 25,
));
foreach($query->posts as $post) {
echo " {$post->post_title}\n";
}
でコピーすることができ PostsByTaxonomy
クラスへのプレゼンテーションの functions.php
ファイル、または使用できる内 .php
ファイルのプラグインできます。
したい場合は試験られなかったのでうれしいですん セバーコード る要旨をダウンロードでき、コピーをwebサーバのルートとして test.php
, 変更のご利用の場合、その請求からブラウザを使用URLのように http://example.com/test.php
.
更新
へ 省略粘投稿 からの投稿に含まれるクエリー、おしてみてください:
$query = new PostsByTaxonomy(array(
'taxonomy' => 'category',
'posts_per_page' => 25,
'caller_get_posts' => true,
));
やればできること PostsByTaxonomy
クラスさせていただくことがあります。粘投稿してしまう前にコンストラクタ:
function __construct($args=array()) {
add_filter('posts_join',array(&$this,'posts_join'),10,2);
$this->posts_by_taxonomy = true;
$this->taxonomy = $args['taxonomy'];
$args['caller_get_posts'] = true // No Sticky Posts
unset($args['taxonomy']);
parent::query($args);
}
更新2
郵送後に、上記ん'caller_get_posts"が推奨されて 'ignore_sticky_posts'
用いるWordPress3.1.
分類法を設定し、用語を含めるように否定できるはずです。
例えば。
<?php
$your_query = new WP_query;
$your_query->query( array( 'taxonomy' => 'your-taxonomy-name' ) );
?>
これは、分類学アーカイブが実行するクエリとほぼ同じです。