私はポストテーブルから選択する必要があります、各投稿は1つのカテゴリとタグに関連しています。 特定のタグやカテゴリを選択する必要があります。 用語表にはカスタム項目「menu_order」があり、カテゴリの順序を設定するために使用されます。 そのフィールドで投稿を並べ替える必要があります。 私は、プレーン選択しない場合:Wordpress custom QUERY
SELECT * from wp_posts
LEFT
JOIN wp_term_relationships
ON (wp_term_relationships.object_id = wp_posts.ID)
LEFT
JOIN wp_terms
ON (wp_terms.term_id = wp_term_relationships.term_taxonomy_id)
WHERE 1=1
AND wp_posts.post_type = 'post'
AND (
wp_posts.post_status = 'publish'
OR wp_posts.post_status = 'private'
)
LIMIT 0, 20
を、私は結果を得る:ちょうどイントロで
+----------------+----------------+----------+---------------------+
| POST ID | Term name | order | type |
+----------------+----------------+----------+---------------------+
| 2 | Fire | 1 | category |
+----------------+----------------+----------+---------------------+
| 2 | blue | 0 | tag |
+----------------+----------------+----------+---------------------+
を。
もし私がWHERE $ wpdb-> terms.term_id = 170とすれば、私は1回の返品しかありません。
+----------------+----------------+----------+---------------------+
| POST ID | Term name | order | type |
+----------------+----------------+----------+---------------------+
| 2 | blue | 0 | tag |
+----------------+----------------+----------+---------------------+
カテゴリまたは/およびタグでフィルタリングしてから、POSTに関連付けられたカテゴリからTERM_ORDERを取得する必要があります。
私はどのような結果が出ても、関連するカテゴリから順番に取り出されます。
私はMYSQLであまり強くないので、これは私を困惑させます。すべての入力は役に立ちます:)
更新 ------------------------------------ --------------
狂ったコーディングの後、私は自分が望むものを得ることができました。 これはおそらく醜いゆっくりだが、うまく動作するので、あなたの息を止めないでください。
まず、すべての商品が収集されるビューを作成します。その後
$qqquery = "
CREATE VIEW samsam AS
SELECT
ID, post_content, post_title, post_excerpt, post_status, post_name, guid, post_type, $wpdb->term_relationships.term_taxonomy_id as cat_term_taxonomy_id, tt1.term_taxonomy_id as tag_term_taxonomy_id
FROM $wpdb->posts
LEFT
JOIN $wpdb->term_relationships
ON ($wpdb->term_relationships.object_id = $wpdb->posts.ID)
LEFT
JOIN $wpdb->term_relationships AS tt1
ON (tt1.object_id = $wpdb->posts.ID)
WHERE 1=1
AND $wpdb->posts.post_type = 'post'
AND (
$wpdb->posts.post_status = 'publish'
OR $wpdb->posts.post_status = 'private'
)
AND ( wp_term_relationships.term_taxonomy_id IN ($query_cat) // ID's of categories, seperated by coma
AND tt1.term_taxonomy_id IN (' . $add_query_tag_id . ') //ID's of POSTS seperated by coma
)
ORDER BY $wpdb->term_relationships.term_taxonomy_id DESC
";
$wpdb->query($qqquery);
私は重複を除外するIDでグループそして、私はビューを選択する場所照会と注文> 0をフィルタリングすることで、カテゴリの順番を得るために、関係や用語に参加します。それは何
$querystr = "
SELECT * from samsam
LEFT
JOIN $wpdb->term_relationships
ON (samsam.ID = $wpdb->term_relationships.object_id)
LEFT
JOIN $wpdb->terms
ON ($wpdb->terms.term_id = $wpdb->term_relationships.term_taxonomy_id)
AND ($wpdb->terms.menu_order > 0)
WHERE menu_order > 0
GROUP BY ID
ORDER BY menu_order ASC
LIMIT $item_limit_offset, $item_limit_pp"; // first is calculation of products to skip, second is how many posts per page
$pageposts = $wpdb->get_results($querystr, OBJECT);
:
カテゴリー1(順位1を持っている) ポスト ポスト ポスト
カテゴリー3(順位2を持っている) ポスト ポスト ポスト
カテゴリー2(注文3を持つ) 投稿 投稿 ポスト
タグやカテゴリによって制限、オフセット、ページ変更することができます。
私は注文カテゴリに余分なフィールドを追加するプラグイン "Term Menu Order"を使用しました。
よろしくお願いいたします。
応答を提供するためのおかげで、私は、悪いコーディングの多くを使用することによって、私が欲しかったものを達成するために管理のおかげで、元のポストに投稿された素敵な一日、解像度を持っている:) – LatvjuAvs