我编写了一个代码,用于根据您的user\\u角色筛选要显示的页面。一切都很好。但我的客户创建了新角色,名称/slug相似。
因此,现在,如果有些人有这个角色,例如:Group APTNB,他将能够看到具有APTNB\\u CA角色的页面,因为在slug中,“APTNB”类似于我的comparison中的“APTNB\\u CA”。
我试图探索在这篇文章中使用“IN”的可能性:Meta_query compare operator explanation
我的剧本在我使用时爆炸了。
这是我的密码。
global $current_user;
$user_roles = $current_user->roles;
$user_role_query = array();
for ($i=0; $i < sizeof($user_roles); $i++) {
$user_role_query[] = array(
\'key\'=>\'attribution_roles\',
\'value\' => $user_roles[$i],
\'compare\'=>\'LIKE\'
);
}
// WP_Query arguments
$args = array (
\'post_type\' => \'suivi_des_comites\',
\'order\' => \'ASC\',
\'orderby\' => \'title\',
\'posts_per_page\' => -1,
\'meta_query\' => array_merge(
array( \'relation\' => \'OR\' ), // this must be an array
$user_role_query
)
);
我认为,关键是重做array()\'s以使其正常工作。
这里是我的一些print\\u r();
print_r($user_role_query);
Array
(
[0] => Array
(
[key] => attribution_roles
[value] => aptnb
[compare] => LIKE
)
)
print_r($args);
Array
(
[post_type] => suivi_des_comites
[order] => ASC
[orderby] => title
[posts_per_page] => -1
[meta_query] => Array
(
[relation] => OR
[0] => Array
(
[key] => attribution_roles
[value] => aptnb
[compare] => LIKE
)
)
)
在my DB中,页面属性“attributement\\u roles”返回此值。
a:2:{i:0;s:8:"aptnb_ca";i:1;s:13:"administrator";}
当我使用该方法时
LIKE
我的查询如下所示。
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 = \'attribution_roles\' AND CAST(wp_postmeta.meta_value AS CHAR) LIKE \'%administrator%\' )) AND wp_posts.post_type = \'suivi_des_comites\' AND (wp_posts.post_status = \'publish\' OR wp_posts.post_status = \'private\') GROUP BY wp_posts.ID ORDER BY wp_posts.post_title ASC
当我使用该方法时
=
我的查询如下所示。
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 = \'attribution_roles\' AND CAST(wp_postmeta.meta_value AS CHAR) = \'administrator\' ) ) AND wp_posts.post_type = \'suivi_des_comites\' AND (wp_posts.post_status = \'publish\' OR wp_posts.post_status = \'private\') GROUP BY wp_posts.ID ORDER BY wp_posts.post_title ASC
我的目标是解决[值=>aptnb与[值=>aptnb\\U ca相同的问题
我的查询如下:查找具有自定义post\\u类型suivi\\u des\\u委员会的所有post,其中user\\u role==“aptnb\\u ca”或user\\u role==“aptnb”
它需要是精确的字符串,而不是其中的一部分。