从周一到周五,我每天都有一篇博文,周末如果用户单击“今天的单词”,我需要检索上周五的博文;如果用户单击“昨天的单词”,我需要检索las周四的博文。
我已使用以下代码注册了查询变量:
function register_query_vars ($vars) {
$vars[] = \'dia\';
return $vars;
}
add_filter(\'query_vars\',\'register_query_vars\');
我有一个“today word”的链接,该链接有以下url:
http://wordsexample.com/?dia=today;
然后,在pre\\u get\\u posts过滤器中,我使用一个函数的结果进行查询,该函数返回一个数组,其中包含我确切需要的年、月和日(取决于星期几和查询的var:今天或昨天)。
问题是如果我hardcode 在set\\u query\\u var中,年、月和日的整数值或字符串值查询返回所需的de post,但如果我放入变量,则查询将返回从传递日期开始的所有帖子,我只需要所需日期的帖子。
此代码运行:
function limit_posts_per_archive_page($query) {
if (!is_admin() && $query->is_main_query()){
if(get_query_var(\'dia\') != \'\'):
set_query_var(\'posts_per_page\', 1);
set_query_var(\'posts_per_archive_page\', 1);
set_query_var(\'post_type\',\'post\');
set_query_var(\'post_status\',\'publish\');
set_query_var( \'year\', 2015 );
set_query_var( \'month\', 1 );
set_query_var( \'day\', 23 );
elseif (is_home()) :
$query->set(\'posts_per_page\', 10);
endif;
}
}
add_filter(\'pre_get_posts\', \'limit_posts_per_archive_page\');
此代码不运行:
function limit_posts_per_archive_page($query) {
if (!is_admin() && $query->is_main_query()){
if(get_query_var(\'dia\') != \'\'):
$dies = dies_consulta(); //returns array with the needed date
$anyet = $dies[\'year\'];
$meset = $dies[\'month\'];
$diet = $dies[\'day\'];
set_query_var(\'posts_per_page\', 1);
set_query_var(\'posts_per_archive_page\', 1);
set_query_var(\'post_type\',\'post\');
set_query_var(\'post_status\',\'publish\');
set_query_var( \'year\', $anyet );
set_query_var( \'month\', $meset );
set_query_var( \'day\', $diet );
elseif (is_home()) :
$query->set(\'posts_per_page\', 10);
endif;
}
}
add_filter(\'pre_get_posts\', \'limit_posts_per_archive_page\');
我也用query->set form进行了测试,但如果我对数据进行硬编码没有问题,如果我将变量放入其中,它就不会运行,这也没关系。
$query->set(\'date_query\', array(
array(
\'year\' => $anyet,
\'monthnum\' => $meset,
\'day\' => $diet,
),
));
或:
$query->set(\'date_query\', array(
array(
\'year\' => $dies[\'year\'],
\'month\' => $dies[\'mon\'],
\'day\' => $dies[\'mday\'],
),
));
我确信我遗漏了一些东西,但我无法理解为什么变量的行为会有所不同,而且不正确。
任何想法或建议都会很高兴。