我想使用按钮过滤wordpress帖子,会有很少的按钮,例如"星期一,星期二,星期三........"当用户点击按钮时,我想显示当天发布的文章,我们该怎么做呢?
查看图片1
答案 0 :(得分:0)
试试这个: -
这个答案可能会帮助那些真正想要定制他们的人 过滤器。
//进行高级SQL编辑以过滤一周中的几天
add_filter( 'posts_where_request', array( &$this, 'processSQLDelMarkers' ), 99, 2 );
/**
* Manipulate the pre-flight SQL query to filter on the day of the week.
* Remove any ##DEL## marker as well as the next character after it
* @param $where
* @return mixed
*/
public function processSQLDelMarkers($where, \WP_Query &$query)
{
// Special gate
if (stripos($where, '##DEL##') === false) {
return $where;
}
// ... security checks omitted for brevity ...
/**
* Sample where clause before adjustment:
* ... AND ihs_postmeta.meta_value != '##DEL##\' AND WEEKDAY(FROM_UNIXTIME(ihs_postmeta.meta_value)) = 4##DEL##' ) ...
* becomes
* ... AND ihs_postmeta.meta_value != '' AND WEEKDAY(FROM_UNIXTIME(ihs_postmeta.meta_value)) = 4 ) ...
*/
return preg_replace( '(##DEL##.?)', '', $where );
}
然后使用精心构造的元值和虚拟比较 像这样(参见原始问题中的代码)我可以实现 SQL注入:
$qv['meta_query'][] = array(
'key' => '##DEL##\' AND WEEKDAY(FROM_UNIXTIME(ihs_postmeta.meta_value)) = 4##DEL##',
'value' => $day,
'compare' => '!='
);
注意:通过正确的安全检查,不应该这样做 注入不需要的SQL字符串。
另一种方式:---
这将显示当天最受欢迎的10篇帖子。
.<?php get_mostpopular("range=daily&limit=10"); ?>