如何显示POSTS_WHERE触发的SQL查询

时间:2013-09-11 作者:Er.KT

我用过

add_filter( \'posts_where\', array(&$this, \'new_filter_where\' ));
function edcal_new_filter_where($where = \'\') {
        global $wpdb;
        $where .= " AND (($wpdb->postmeta.meta_key = \'assignto\' AND $wpdb->postmeta.meta_value = \'7\')) ";            
        return where;
    }
现在,如何打印由我的过滤器触发的sql查询?

1 个回复
最合适的回答,由SO网友:s_ha_dum 整理而成

快速而肮脏的方法是var_dump($wp_query->request) (或者你给WP_Query 对象(如果您已经创建了一个新的对象),在查询运行的页面上以及在查询运行之后。

您还可以添加define(\'SAVEQUERIES\', true);wp-config.php 保存查询以进行分析。您可以从Codex中读取类似以下内容的查询:

if (current_user_can(\'administrator\')){
    global $wpdb;
    echo "<pre>";
    print_r($wpdb->queries);
    echo "</pre>";
}

结束

相关推荐

列出分类法:如果分类法没有POST,就不要列出分类法--取决于定制的POST-META?

这可能很难解释,我不知道是否有解决办法!?我有一个名为“wr\\u event”的自定义帖子类型和一个名为“event\\u type”的分层自定义分类法。自定义帖子类型有一个元框,用于event_date 并且与此帖子类型关联的所有帖子都按以下方式排序event_date. 我在循环中有一个特殊的条件来查询event_date 已经发生了-在这种情况下,它没有显示,但只列在我的档案中。就像你可以使用wp_list_categories() 我编写了一个自定义函数,它以完全相同的方式列出所有分类术语。现在