How to extract specific post

时间:2018-04-10 作者:Eleonora rossini

我只提取meta\\u值不包含特定字符串的帖子。我使用此代码:

$query = new WP_Query(
        array(  
            \'post_type\' => \'estate\',
            \'post_status\' => \'any\',
            \'meta_key\' => \'getrix_id\',
            \'meta_value\' => array(\'miogest_\', \'oneclick_\', \'gestifiaip_\'),
            \'meta_compare\' => \'NOT LIKE\'
        )
    );
    var_dump($query);
我必须丢弃所有meta\\u值包含字符串“miogest\\u”、“gestifiaip\\u”和“oneclick\\u”的记录,但这样一来,返回的结果就不正确了。

你能帮帮我吗?

1 个回复
SO网友:Jacob Peattie

如中所述the documentation meta_value, 如果未在元查询中使用,则需要是字符串。

通常,如果要基于多个元数据进行查询,则需要添加meta_query 论点但正如文件中所述value:

仅当compare\'IN\', \'NOT IN\', \'BETWEEN\', 或\'NOT BETWEEN\'.

自从NOT LIKE 不是其中之一,这意味着您需要添加多个NOT LIKE 带有AND 关系,如:

$query = new WP_Query( array(  
    \'post_type\'   => \'estate\',
    \'post_status\' => \'any\',
    \'meta_query\'  => array(
        \'relation\' => \'AND\',
        array(
            \'key\'     => \'getrix_id\',
            \'value\'   => \'miogest_\',
            \'compare\' => \'NOT LIKE\',
        ),
        array(
            \'key\'     => \'getrix_id\',
            \'value\'   => \'oneclick_\',
            \'compare\' => \'NOT LIKE\',
        ),
        array(
            \'key\'     => \'getrix_id\',
            \'value\'   => \'gestifiaip_\',
            \'compare\' => \'NOT LIKE\',
        ),
    ),  
) );
然而,这是相当冗长的。更简单的方法是使用NOT REGEXP 作为比较。这会让你通过regular expression 对于以miogest_, oneclick_, 或gestifiaip_, 然后只返回那些不返回true的结果:

$query = new WP_Query( array(
    \'post_type\'    => \'estate\',
    \'post_status\'  => \'any\',
    \'meta_key\'     => \'getrix_id\'
    \'meta_compare\' => \'NOT REGEXP\',
    \'meta_value\'   => \'^(miogest_|oneclick_|gestifiaip_)\',
) ); 

结束

相关推荐

是否可以将定制的SQL用于单个post.php?

是否可以在单个页面中使用自定义SQL。php文件来返回所需的单个帖子的数据?就我的目的而言,在$querystr中有一些数据操作,使用php很难再现,而使用简单的SQL很容易实现。如果我把下面的代码放在一页中。php文件,我目前有一个完整的结果集,每个帖子一行。我只想提取与用户单击的页面相关的行/记录/帖子。<?php $querystr = \" SELECT custom_sql_column_name_here FROM custom_sql