我正在努力回答这个问题。我有一个页面,我将显示上个月和本月推出的产品。(http://the.nett.mx/innvictus/wp/) 一切都很好,但当我在按品牌(“marca”)过滤查询时应用相同的日期限制时,它就不起作用了。我猜我在meta_query
. 我给你看我的pre_get_posts
:
add_action(\'pre_get_posts\', \'my_pre_get_posts\', 10, 1);
function my_pre_get_posts( $query ) {
global $fecha_actual, $fecha_anterior;
if( is_admin() ) {
return;
}
if( isset($query->query_vars[\'post_type\']) && $query->query_vars[\'post_type\'] == \'producto\' ) {
$GLOBALS[\'my_query_filters\'] = array(
\'field_1\' => \'marca\',
\'field_2\' => \'mes\'
);
$meta_query = $query->get(\'meta_query\');
foreach( $GLOBALS[\'my_query_filters\'] as $key => $name ) {
$name = filter_input( INPUT_GET, $name, FILTER_SANITIZE_STRING );
if( empty($_GET[ $name ]) ) {
continue;
}
$value = explode(\',\', $_GET[ $name ]);
$meta_query[] = array(
\'key\' => $name,
\'value\' => $value
);
}
$query->set(\'meta_query\', $meta_query);
$query->set(\'meta_key\',\'fecha\');
$query->set(\'orderby\',\'meta_value_num\');
$query->set(\'order\',\'ASC\');
if( !empty($_GET[ \'marca\' ]) ) {
echo "entrada ".$fecha_actual. " & ". $fecha_anterior;
$query->set(\'value\',array($fecha_anterior, $fecha_actual));
$query->set(\'compare\',\'BETWEEN\');
$query->set(\'type\',\'DATE\');
}
}
}
我应该使用另一种技术来“过滤过滤”查询吗?Thx提前!
p、 s.FechaFronter是“前一日期”,fecha actual是“当前日期”,定义如下:$fecha_actual = current_time(\'Ymt\');
$fecha_anterior = date(\'Ymd\', strtotime("first day of last month"));)
如果您需要获取当前和上个月的
SO网友:danielgc
我注意到这个问题与一个自定义字段是一种分类法有关,因此,当我对该自定义帖子类型使用归档页面时,我只需要过滤查询以查找日期限制。
$fecha_actual = current_time(\'Ymt\'); //t regresa el ultimo día del mes
$fecha_anterior = date(\'Ymd\', strtotime("first day of last month"));
add_action(\'pre_get_posts\', \'my_pre_get_posts\', 10, 1);
function my_pre_get_posts( $query ) {
global $fecha_actual, $fecha_anterior;
if( is_admin() ) {
return;
}
if( isset($query->query_vars[\'post_type\']) && $query->query_vars[\'post_type\'] == \'producto\' && is_archive()) {
$meta_query = $query->get(\'meta_query\');
if( !empty($_GET[ \'marca\' ]) ) {
$meta_query[] = array(
array(
\'key\' => \'fecha\',
\'value\' => array($fecha_anterior, $fecha_actual),
\'compare\' => \'BETWEEN\',
\'type\' => \'DATE\'
)
);
}
$query->set(\'meta_query\', $meta_query);
$query->set(\'meta_key\',\'fecha\');
$query->set(\'orderby\',\'meta_value_num\');
$query->set(\'order\',\'ASC\');
}
}