【问题标题】:Wordpress meta query on sqlite not workingsqlite上的Wordpress元查询不起作用
【发布时间】:2014-05-09 19:59:25
【问题描述】:

我用 wordpress 和 mysql 开发了一个网站。该设置是本地的。在我托管我的网站(在一所大学)的服务器上,他们使用 sqlite。我使用这个插件使 wordpress 与 Sqlite 一起工作:

http://wordpress.org/plugins/sqlite-integration/

到目前为止一切正常。当我尝试在本地执行元查询时,一切正常(mysql),我得到了我预期的结果,但在服务器上查询没有返回任何帖子。

数据库和帖子元的内容相同。

代码:

function rlp_get_posts($post_type = 'post', $num = 10, $offset = 0){

        $args = array(
                'posts_per_page'   => $num,
                'offset'           => $offset,
                'orderby'          => 'id',
                'order'            => 'ASC',
                'post_type'        => $post_type,
        'meta_query' => array(
                array(
                'key' => 'rlp_native_age',
                'value' => array( 18, 78 ),
                'type' => 'numeric',
                'compare' => 'BETWEEN'
                )
             )
                'post_status'      => 'publish',
                'suppress_filters' => false
        );

    return new WP_Query( $args );
}

WP_Query 请求:

本地

[request] => SELECT SQL_CALC_FOUND_ROWS  wp_posts.ID FROM wp_posts  INNER JOIN wp_postmeta ON (wp_posts.ID = wp_postmeta.post_id) WHERE 1=1  AND wp_posts.post_type = 'native' AND ((wp_posts.post_status = 'publish')) AND ( (wp_postmeta.meta_key = 'rlp_native_age' AND CAST(wp_postmeta.meta_value AS SIGNED) BETWEEN '18' AND '78') ) GROUP BY wp_posts.ID ORDER BY wp_posts.post_date ASC LIMIT 0, 20

服务器

[request] => SELECT SQL_CALC_FOUND_ROWS  wp_posts.ID FROM wp_posts  INNER JOIN wp_postmeta ON (wp_posts.ID = wp_postmeta.post_id) WHERE 1=1  AND wp_posts.post_type = 'native' AND ((wp_posts.post_status = 'publish')) AND ( (wp_postmeta.meta_key = 'rlp_native_age' AND CAST(wp_postmeta.meta_value AS SIGNED) BETWEEN '18' AND '78') ) GROUP BY wp_posts.ID ORDER BY wp_posts.post_date ASC LIMIT 0, 20

请求似乎相同。目前我无权访问数据库来执行我自己的 SQL 查询来解决问题

编辑

当我进行 tax_query 时,在本地和服务器上一切正常。

代码:

function rlp_get_posts($post_type = 'post', $num = 10, $offset = 0){

            $args = array(
                    'posts_per_page'   => $num,
                    'offset'           => $offset,
                    'orderby'          => 'id',
                    'order'            => 'ASC',
                    'post_type'        => $post_type,
            'tax_query' => array(
                    array(
                    'key' => 'sex',
                    'field' => 'id',
                    'terms' => array(71)
                    )
                 )
                    'post_status'      => 'publish',
                    'suppress_filters' => false
            );

        return new WP_Query( $args );
    }

WP_Query 服务器请求(同本地):

[request] => SELECT SQL_CALC_FOUND_ROWS  wp_posts.ID FROM wp_posts  INNER JOIN wp_term_relationships ON (wp_posts.ID = wp_term_relationships.object_id) WHERE 1=1  AND ( wp_term_relationships.term_taxonomy_id IN (71) ) AND wp_posts.post_type = 'native' AND ((wp_posts.post_status = 'publish')) GROUP BY wp_posts.ID ORDER BY wp_posts.post_date ASC LIMIT 0, 20

【问题讨论】:

    标签: mysql wordpress sqlite


    【解决方案1】:

    插件有一个错误,但插件的作者提出了一个解决方法,直到他修复它。

    我测试了解决方法并按预期工作。

    'meta_query' => array(
        'relation' => 'AND',
        array(
            'key'     => 'rlp_native_age',
            'value'   => 18,
            'type'    => 'numeric',
            'compare' => '>='
        ),
        array(
            'key'     => 'rlp_native_age',
            'value'   => 78,
            'type'    => 'numeric',
            'compare' => '<='
        )
    )
    

    发帖及解决方法:

    http://wordpress.org/support/topic/wordpress-meta-query-not-working?replies=3

    【讨论】:

      猜你喜欢
      • 2014-02-12
      • 2018-07-07
      • 1970-01-01
      • 1970-01-01
      • 2012-04-29
      • 1970-01-01
      • 2015-03-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多