假设您有一些代码可以使用pre_get_posts
e、 g。
add_action( \'pre_get_posts\', \'be_exclude_category_from_blog\' );
function be_exclude_category_from_blog( $query ) {
if( $query->is_main_query() && $query->is_home() ) {
$query->set( \'cat\', \'-4\' );
}
}
我发现了一段很好的代码,可以让您进一步过滤这些帖子,直到最后90天:
add_action( \'pre_get_posts\', \'be_exclude_category_from_blog\' );
function be_exclude_category_from_blog( $query ) {
if( $query->is_main_query() && $query->is_home() ) {
add_filter( \'posts_where\', \'filter_date\' );
$query->set( \'cat\', \'-4\' );
}
}
function filter_date( $where = \'\' ) {
$where .= " AND post_date > \'" . date(\'Y-m-d\', strtotime(\'-90 days\')) . "\'";
return $where;
}
这非常有效。但是,如果我想使用相同的方法来定位帖子的元数据,而不仅仅是post\\u date,该怎么办?这可能吗?从…起
this answer 看起来你应该这样做:
add_action( \'pre_get_posts\', \'be_exclude_category_from_blog\' );
function be_exclude_category_from_blog( $query ) {
if( $query->is_main_query() && $query->is_home() ) {
add_filter( \'posts_where\', \'filter_date\' );
$query->set( \'cat\', \'-4\' );
}
}
function filter_date( $where = \'\' ) {
global $wpdb;
$where .= " AND ($wpdb->postmeta.meta_key = \'_length\' AND $wpdb->postmeta.meta_value = \'61\')";
return $where;
}
然而,这对我不起作用,它返回零结果。尽管我知道有些帖子的元键是
_length
值为
61
.
有人能给我指出正确的方向吗?
干杯