个性化阅读
专注于IT技术分析

WordPress文章过滤器使用每星期的一天

我想用按钮过滤wordpress上的文章,会有几个按钮,比如“周一,周二,周三……”当用户点击一个按钮,我想显示当天发布的文章,我们如何做到这一点?

查看图片


#1


试试这个:–

这个答案可能会帮助那些真正想要定制过滤器的人。//进行高级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"); ?>
赞(0)
未经允许不得转载:srcmini » WordPress文章过滤器使用每星期的一天

评论 抢沙发

评论前必须登录!