自定义查询与自定义帖子类型和类别ID
问题描述:
我想抓住一个特定帖子类型的帖子列表和它被分配的类别ID。自定义查询与自定义帖子类型和类别ID
所以从网上搜索我设法拿出
function fs_tpl_get_results($post_type, $mycat) {
global $wpdb;
$args = wp_parse_args($args,array(
'post_type' => '$post_type',
'term_id' => 22,
));
extract($args);
$sql = <<<SQL
SELECT DISTINCT
{$wpdb->terms}.*,
COUNT(*) AS post_count
FROM
{$wpdb->terms}
INNER JOIN {$wpdb->term_taxonomy} ON {$wpdb->terms}.term_id={$wpdb->term_taxonomy}.term_id
INNER JOIN {$wpdb->term_relationships} ON {$wpdb->term_taxonomy}.term_taxonomy_id={$wpdb->term_relationships}.term_taxonomy_id
INNER JOIN {$wpdb->posts} ON {$wpdb->term_relationships}.object_id={$wpdb->posts}.ID
INNER JOIN {$wpdb->term_relationships} related_relationship ON {$wpdb->posts}.ID=related_relationship.object_id
INNER JOIN {$wpdb->term_taxonomy} related_term_taxonomy ON related_relationship.term_taxonomy_id=related_term_taxonomy.term_taxonomy_id
INNER JOIN {$wpdb->terms} related_terms ON related_term_taxonomy.term_id=related_terms.term_id
WHERE 1=1
AND (related_term_taxonomy.taxonomy<>{$wpdb->term_taxonomy}.taxonomy OR related_terms.term_id<>{$wpdb->terms}.term_id)
AND {$wpdb->posts}.post_type='%s'
AND related_terms.term_id=%d
GROUP BY
{$wpdb->terms}.term_id
SQL;
$sql = $wpdb->prepare($sql,$post_type,$term_id);
$results=$wpdb->get_results($sql);
return $results;
}
但它返回一个空的结果到目前为止,没有任何人有任何想法解决这个问题吗?
答
有建于WordPress的功能,可以这样做:
<?php
$args = array(
'category_name' => 'your_csategoty_name',
'post_type' => 'your_custom_posttype'
);
// The Query
$the_query = new WP_Query($args);
// The Loop
while ($the_query->have_posts()) : $the_query->the_post();
//inside the loop
the_title();
the_content();
endwhile;
// Reset Post Data
wp_reset_postdata();
?>
http://codex.wordpress.org/Class_Reference/WP_Query#Post_.26_Page_Parameters
答
下面是一个代码:
$args = array('post_type' => 'post','meta_query' => array(array('key' => 'cat','value' => 'yes','compare' => '%')));
$cat = new WP_Query($args);
// The Loop
while ($cat->have_posts()) : $cat->the_post();
$P_ID = get_the_ID();
endwhile;
// Reset Post Data
wp_reset_postdata();
$post = wp_get_single_post($P_ID);
如果它不能正常工作更改页面ID