我在WordPress中创建了自定义帖子类型,以记录某些数据,例如woocommerce的产品ID 和一些个人用户输入的信息,这些信息已正确地列在 wp列表表中,现在我正在尝试按产品名称进行排序,但是我只有产品ID ,(在列表中,我使用woocommerce本机功能获取了产品名称),按产品代码使用以下代码正常工作
add_filter('parse_query', array($this, 'parse_query'));
public function parse_query($query) {
global $pagenow;
if (!is_admin())
return;
$orderby = $query->get('orderby');
if (isset($_GET['post_type'])) {
$type = $_GET['post_type'];
//frontendtestwp is a custom cpt of wordpress
if ('frontendtestwp' == $type && is_admin() && $pagenow == 'edit.php') {
// for orderby just order based on product id
$query->set('meta_key', 'frontend_pid'); //contain product id
$query->set('orderby', 'meta_value_num');
}
}
}
现在,如果我想根据产品名称进行排序,我有两个选择:一种是另外在我这边记录产品名称( 我不想这样做,如果对原始产品名称进行了任何更新,则排序结果将基于旧数据 )。
第二个选项正在使用 posts_where 过滤器(目前正在尝试此选项),因为我的想法是检查产品(woocommerce)的自定义帖子类型另外还带有 product_id =我的元值和按产品标题定购
在posts_where
过滤器中,我还添加了以下代码以检入产品,但是我陷入了(id of product==my_meta_value_product_id)
的状态检查中
$where .= " AND `post_type`='product'";
最初,我想使用内部联接,但这不是必需的,因为所有自定义帖子类型都在一个表中,我要检查的唯一事情是根据我的元产品ID按产品标题排序。
有什么办法可以利用我现有的数据(产品ID)达到我想要的结果?