2017-05-17 2 views
1

プレフィックスの異なる同じデータベースに2つのWordpressインストールがある複合セットアップで作業しています。

私は主にWP機能に組み込まれて使用して私のSQLと少しさびを頂いたサイトB.

のためのサイトAからの製品のいくつかのクエリを作成する必要があります。

オンサイト私は、タクソノミをループし、それぞれの投稿について別のクエリを作成するために、メタクエリを使用してget_termsを使用しています。サイトBで

私は1つのカスタムの$ wpdbのクエリを実行し、それはほとんどどこ私はポストメタ値をチェックして、そのように分類名で発注しています作業したいのですが:

$querystr = " 
    SELECT $tsm_posts.*, $siteA_terms.name, $siteA_terms.slug, tax2.description 
    FROM $siteA_posts, $siteA_postmeta 
    INNER JOIN {$siteA_term_relationships} AS rel2 ON $siteA_postmeta.post_id = rel2.object_id 
    INNER JOIN {$siteA_term_taxonomy} AS tax2 ON rel2.term_taxonomy_id = tax2.term_taxonomy_id 
    INNER JOIN {$siteA_terms} USING (term_id) 
    WHERE $siteA_posts.ID = $siteA_postmeta.post_id 
    AND $siteA_postmeta.meta_key = 'siteB_product' 
    AND $siteA_postmeta.meta_value = 'yes' 
    AND $siteA_posts.post_status = 'publish' 
    AND $siteA_posts.post_type = '" . SP_PRODUCTS . "' 
    AND $siteA_posts.post_parent = '0' 
    GROUP BY rel2.object_id 
    ORDER BY GROUP_CONCAT({$siteA_terms}.name ORDER BY name ASC)"; 
    $siteA_products = $wpdb->get_results($querystr, OBJECT); 

私が抱えている主な問題の1つは、タクソノミーのメタ値でフィルタリングすることができるだけでなく、いくつかのカテゴリは表示されないことです。

は、だから私は、別のINNERが分類メタテーブルにJOINをやろうとしてきたが、私は問題を抱えて所望の結果を得ていないよ:

INNER JOIN {$siteA_termmeta} AS taxMeta ON (taxMeta.term_id = rel2.term_taxonomy_id AND taxMeta.meta_key = 'product_category_main' AND taxMeta.meta_value = 'YES') 

任意の提案は大歓迎します。

答えて

0

分類法メタに問題がありましたが、私は分類法そのものを制限して結果を達成できました。また、必要なポストメタに特定の呼び出しを追加してコードをクリーンアップして、 )

このコードは、ポストメタとタクソノミでフィルタリングし、その後、分類分類タイトルで投稿を注文します。

注:私のSQLでの錆を解消すると、結合や特定のメタなどの特定の呼び出しに名前を付ける方が簡単になり、抽出や識別が容易になります。

$query = " 
SELECT p.ID, p.post_title, p.post_content, 
fi_id.meta_value AS featured_id, taxable.meta_value AS taxable, 
producer.name AS producer_name, producer.slug AS producer_slug, producer_tax.description AS producer_description 
FROM {$siteA_posts} p 
LEFT JOIN {$siteA_postmeta} fi_id ON fi_id.post_id = p.ID AND fi_id.meta_key = '_thumbnail_id' 
LEFT JOIN {$siteA_postmeta} taxable ON taxable.post_id = p.ID AND taxable.meta_key = 'taxable' 
LEFT JOIN {$siteA_postmeta} loc ON loc.post_id = p.ID AND loc.meta_key = 'location_loftbox' 
INNER JOIN {$siteA_term_relationships} AS rel2 ON loc.post_id = rel2.object_id 
INNER JOIN {$siteA_term_taxonomy} AS producer_tax ON rel2.term_taxonomy_id = producer_tax.term_taxonomy_id AND producer_tax.taxonomy = 'producers' 
INNER JOIN {$siteA_terms} AS producer USING (term_id) 
WHERE p.ID = loc.post_id 
AND loc.meta_key = 'siteB_product' 
AND loc.meta_value = 'yes' 
AND p.post_status = 'publish' 
AND p.post_type = 'products' 
AND p.post_parent = '0' 
GROUP BY rel2.object_id 
ORDER BY GROUP_CONCAT(producer.name ORDER BY name ASC) 
"; 
関連する問題