【问题标题】:Wordpress Post Filter using day of the week使用星期几的 Wordpress 后过滤器
【发布时间】:2018-05-12 16:47:28
【问题描述】:

我想使用按钮过滤 wordpress 帖子,当用户单击按钮时,会有几个按钮,如“星期一、星期二、星期三........”,我想显示发布的文章那天,我们该怎么办?

查看图片1

【问题讨论】:

标签: php wordpress filter wordpress-theming custom-wordpress-pages


【解决方案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"); ?>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多