1

ワードプレスでカテゴリごとに新しいページを作成しています。投稿エディターには、セクター タイプを選択できるカスタム フィールドがあり、更新時に投稿に適用されます。カスタム フィールドkeyは次のとおりsectorです。カスタム フィールドのメタvalueオプションではSectorA、 、SectorBおよび を使用できますSectorC。というカスタム投稿タイプを使用していますprojects

このリンクのアドバイスに従いましたhttp://weblogtoolscollection.com/archives/2008/04/13/how-to-only-retrieve-posts-with-custom-fields/

セクター名でループをフィルタリングするように、以下のコードのクエリ行を変更するにはどうすればよいですかSectorA。次に、各テンプレート ページのコードを再利用して、値を他のページに変更しSectorBますSectorC

これは何とか変更する必要があると思います:

$customPosts->query('showposts=5&sector=sectorA&post_type=projects' );

現在sector valuedescription value正常にエコーされますが、すべての投稿が表示されています。それで、それをセクターAに制限しようとする私の試みsector=sectorAはうまくいかないようですか?

このコードは functions.php にあります。

function get_custom_field_posts_join($join) {
global $wpdb, $customFields;
return $join . "  JOIN $wpdb->postmeta postmeta ON (postmeta.post_id = $wpdb->posts.ID and postmeta.meta_key in ($customFields)) ";
}
function get_custom_field_posts_group($group) {
global $wpdb;
$group .= " $wpdb->posts.ID ";
return $group;
}

そして、このコードはテンプレートページにあります:

<?php /* Begin Custom Field Posts */ ?>
<h2>Custom Posts</h2>
<ul>
<?php 
global $customFields;
$customFields = "'sector', 'description'";
$customPosts = new WP_Query();
add_filter('posts_join', 'get_custom_field_posts_join');
add_filter('posts_groupby', 'get_custom_field_posts_group');
$customPosts->query('showposts=5&sector=sectorA&post_type=projects' );//Uses same parameters as query_posts
remove_filter('posts_join', 'get_custom_field_posts_join');
remove_filter('posts_groupby', 'get_custom_field_posts_group');

while ($customPosts->have_posts()) : $customPosts->the_post(); 
$sector = get_post_custom_values("sector"); 
$description=  get_post_custom_values("description");?>
<li><?php echo $sector[0]; ?></li>
<li><?php echo $description[0]; ?></li><br />
<?php endwhile; ?>
</ul>
<?php /* End Custom Field Posts */ ?>

ご協力いただきありがとうございます

4

2 に答える 2

0

これはあなたが望むものかもしれません

function get_custom_field_posts_join($join) {
global $wpdb, $customSector;
return $join . "  JOIN $wpdb->postmeta postmeta ON (postmeta.post_id = $wpdb->posts.ID and postmeta.meta_key = 'sector' and postmeta.value = '$customSector') ";
}

とページの変更

$customSector='sectorA';//<--- insert this
add_filter('posts_join', 'get_custom_field_posts_join');
于 2013-03-03T17:37:37.897 に答える