Wordpress 如何将此元查询转换为sql?

Wordpress 如何将此元查询转换为sql?,wordpress,Wordpress,我的自定义个人Wordpress主题中有一个有效的元查询。我想将其转换为SQL查询,但不知道如何将其转换为WP SQL并添加额外的排序参数。有人能帮我把这个meta_查询转换成WP-SQL吗 $metakey = "series"; $args = array( 'meta_query' => array( array( 'key' => 'series' ) ), 'orderby' => 'm

我的自定义个人Wordpress主题中有一个有效的
元查询。我想将其转换为SQL查询,但不知道如何将其转换为WP SQL并添加额外的排序参数。有人能帮我把这个meta_查询转换成WP-SQL吗

$metakey = "series";

$args = array(
    'meta_query' => array(
        array(
            'key' => 'series'
        )
    ),
    'orderby' => 'meta_value',
    'order' => 'ASC',
    'ignore_sticky_posts' => 1,
    'posts_per_page'   => -1
);

如果您计划使用普通sql查询。请务必加入以下表格

wp_posts,wp_meta


使用这两个表的关系生成SQL语句

您的
$args
将转换为此
sql
查询:

SELECT wp_posts.* FROM wp_posts 
INNER JOIN wp_postmeta ON ( wp_posts.ID = wp_postmeta.post_id ) 
WHERE 1=1 
AND (wp_postmeta.meta_key = 'series') 
AND wp_posts.post_type = 'post' 
AND (wp_posts.post_status = 'publish' OR wp_posts.post_status = 'private') 
GROUP BY wp_posts.ID ORDER BY wp_postmeta.meta_value ASC
因此,如果您希望使用它,您的代码将是:

$query = "SELECT $wpdb->posts.* FROM $wpdb->posts 
INNER JOIN $wpdb->postmeta ON ( $wpdb->posts.ID = $wpdb->postmeta.post_id ) 
WHERE 1=1 
AND ($wpdb->postmeta.meta_key = 'series') 
AND $wpdb->posts.post_type = 'post' 
AND ($wpdb->posts.post_status = 'publish' OR $wpdb->posts.post_status = 'private') 
GROUP BY $wpdb->posts.ID ORDER BY $wpdb->postmeta.meta_value ASC ";
您可以在WordPress的
模板中使用它。如果要在某个插件/函数文件中使用,请首先从
global
范围调用
$wpdb
(或者您将得到
未定义的
警告):


你说的WP-SQL是什么意思?我的意思是:谢谢。你能说得更准确些吗?
global $wpdb;