我的问题汇集了很多东西,这很可能是为什么我不能让它为它工作。
我不精通长 SQL 查询,也不是 Wordpress 的忠实粉丝,但我被要求修复特定页面上的排序,为了实现这一点,我需要按自定义属性进行排序。
我试过这个,但没有奏效:
$query = array(
'post_type' => 'custom_post_type',
'meta_key' => 'key_for_meta',
'orderby' => 'STR_TO_DATE(meta_value, "%d/%m/%Y")',
'order' => 'DESC',
'first_taxonomy' => $first_taxonomy,
'second_taxonomy' => $second_taxonomy
);
这将是理想的解决方案,如果有人知道如何完成这项工作,我很想知道。
我已经尝试过,key_for_meta
而不是meta_value
,orderby
并尝试指向正确的 table.column 等等。
经过大量尝试后,我失去了所有希望,并试图创建一个查询。它是这样的:
SELECT p.*,
m.meta_key, m.meta_value,
tt.taxonomy as s_tax,
t.slug
FROM wp_posts AS p
INNER JOIN wp_postmeta AS m ON p.ID = m.post_id AND m.meta_key = 'key_for_meta'
INNER JOIN wp_term_relationships AS tr ON p.ID=tr.object_id
**INNER JOIN wp_term_taxonomy AS tt ON tr.term_taxonomy_id = tt.term_taxonomy_id
INNER JOIN wp_terms AS t ON tt.term_id = t.term_id**
WHERE 1 = 1
AND wp_posts.post_type = 'custom_post_type'
AND wp_posts.post_status = 'publish'
**AND t.slug = '$first_taxonomy'
AND t.slug = '$second_taxonomy'**
GROUP BY wp_posts.ID
ORDER BY STR_TO_DATE(m.meta_value, '%d/%m/%Y') ASC";
任何解决方案将不胜感激。我不在乎问题是如何解决的,我只想让它完美地工作。如果它也可以看起来不错,完美,但我放弃了。
日期的格式为 DD/MM/YYYY。根据要求,来自 wp_postmeta 的一些列:
meta_id post_id meta_key meta_value
5101 3521 data_prova 12/01/2013
5114 3526 data_prova 02/03/2013
5165 3554 data_prova 02/03/2013
此外,我还不能让分类法对我所做的查询起作用。
好消息:我让几乎所有东西都能正常工作。唯一的问题是,我无法让它与两种分类法一起使用,但如果我只尝试一种,它就可以工作。