wordpress下统计所有自定义类型文章的自定义栏目

作者:stoat 发布时间:2015-07-07 分类:wordpress

在项目中需要使用到,对所有的自定义类型文章统计自定义栏目,同时需要根据自定义栏目对自定义类型文章进行筛选。

一句话SQL:

select meta_value from wp_postmeta where meta_key =  '_meta_box_xx' group by meta_value;

对所有的自定义类型文章统计自定义栏目

//$type为自定义栏目meta_key
//$custom为自定义类型文章
function all_custom_meta_key($type, $custom){
	global $wpdb;
    if( empty( $type ) )
        return;
	$r = $wpdb->get_results( $wpdb->prepare( "
        SELECT p.ID, pm.meta_value FROM {$wpdb->postmeta} pm
        LEFT JOIN {$wpdb->posts} p ON p.ID = pm.post_id
        LEFT JOIN {$wpdb->term_relationships} tr ON p.ID = tr.object_id
        LEFT JOIN {$wpdb->term_taxonomy} tt ON tr.term_taxonomy_id = tt.term_taxonomy_id
        WHERE pm.meta_key = '%s'
        AND p.post_status = 'publish'
        AND p.post_type = '%s' group by pm.meta_value", $type, $custom));

    foreach ( $r as $my_r )
        $metas[$my_r->ID] = $my_r->meta_value;

    return $metas;
}

代码参考:https://wordpress.org/support/topic/how-to-get-a-meta-values-from-all-posts-in-a-special-category

根据自定义栏目对文章进行筛选


function filter_by_meta_key($type=false,$val=false){
	$args = array(
		//'post_type' => $custom,
		'post_type' => 'books',//类型
		'post_status' => 'publish',
		'meta_key' => 'views',
		'meta_query' => array(
			array(
				'key' => $type,
				'value' => $val
				//'compare' => 'IN'
			)
		),
		
		'posts_per_page' => 5, 
		'orderby' => 'date',
		'order' => 'ASC',
	);
	$related_items = new WP_Query( $args );
	if ($related_items->have_posts()) :
	//echo '
    '; while ( $related_items->have_posts() ) : $related_items->the_post();?>
  • '; endif; wp_reset_query(); }

更多用法参考wordpress中WP_Query使用post_title做条件

原文地址:wordpress下统计所有自定义类型文章的自定义栏目 by 雪鼬博客

标签:wordpress

评论已关闭