だから私は複数の投稿があります。2 つのカテゴリ。著者によって作成された一部の投稿は、1 つのカテゴリにのみ含まれます。ただし、他の著者の投稿は両方のカテゴリに含まれる場合があります。重複を削除する必要があります。一度に投稿できる著者は 1 人だけです。だから私は、2つのより重要な(サービスポストではなくショップポスト)カテゴリをデフォルトにして、そのポストをリストするつもりでした.
しかし、そうする方法に戸惑っています。
データを取得して出力用に処理する方法は次のとおりです。
$allPosts = get_post_type_data('archive', 'all');
for($i = 0; $i < count($allPosts); $i++){
if($allPosts[$i]['post_type'] == 'antique-shops'){
$shopData[] = $allPosts[$i];
}
if($allPosts[$i]['post_type'] == 'member-dealers'){
$memberData[] = $allPosts[$i];
}
if($allPosts[$i]['post_type'] == 'services'){
$serviceData[] = $allPosts[$i];
}
}
$business = array_merge((array)$shopData, (array)$serviceData);
function cmp($a, $b){
return strcmp(rewrite_name($a['custom']['wpcf-business-contact'][0]), rewrite_name($b['custom']['wpcf-business-contact'][0]));
}
usort($business, "cmp");
for($i = 0; $i < count($business); $i++){
if($i % 2){
$className = 'odd';
} else{
$className = 'even';
}
$check = check_member($business[$i]['custom']['wpcf-business-contact'][0], $memberData);
if($check[0] == 'true'){
echo display_listing('member-dealers', $check[1], $business[$i], $className);
}
}
すべてのデータを取得したら、アンティーク ショップとサービスを 1 つの配列にマージし、メンバーには独自のデータ配列を残します。
次に、ビジネス データ項目ごとに、ビジネス連絡先をチェックして、それがメンバー データと一致するかどうかを確認します。
$check
配列値を返します。$check[0]
= true/false $check[1]
= 特定のメンバーに関するデータの配列。
display_listing()
ビジネス/メンバーごとに入力されたデータを取得して出力するだけです。
ビジネスまたはサービスがメンバー データに対してチェックされる直前に、重複をチェックする必要があると考えています。
各アンティーク ショップまたはサービスには取引先担当者がいます。$business[$i]['custom']['wpcf-business-contact'][0]
これは、その取引先担当者がメンバーとして存在するかどうかを確認するために使用されます。
したがって$business[$i]['custom']['wpcf-business-contact'][0]
、アンティーク ショップとサービスの両方に属している場合は、その人物に関するサービス データを配列から削除します。
私はこれを試しました(ループ内):
if(($key = array_search($business[$i]['custom']['wpcf-business-contact'][0], $business)) !== false){
unset($business[$key]);
}
このシナリオで重複を削除するための有用なガイダンスはありますか?