我有一个页面,列出了一些自定义帖子,但它们没有按正确的字母顺序显示。作为测试,我还尝试按ID的顺序列出它们,但它们的顺序也不正确。当它被列为ID时,它们看起来好像分成了3组在4000年代的高位数字,低于200,然后是3000,这很奇怪。它在我的本地服务器上运行良好。在Wordpress后端也可以进行订购。当我在1&;上将站点移动到新的托管包时,问题似乎发生了;1、以前是否有服务器特定的订购问题?
我制作了两个测试页面,显示了标题和ID(顺序错误)ID顺序的简单列表:http://www.realpatisserie.co.uk/allergen-list/allergen-list-test-id/标题顺序:http://www.realpatisserie.co.uk/allergen-list/allergen-list-test/
$args = array(
\'posts_per_page\' => -1, // show all items
\'orderby\' => \'ID\', // was \'title\',
\'order\' => \'ASC\',
\'post_type\' => \'product_al\',
\'post_status\' => \'publish\'
);
$myposts = get_posts( $args );
foreach ( $myposts as $post ) : setup_postdata( $post );
$product_title = ucfirst(get_the_title());
$product_ID = get_the_ID();
?>
<tr id="p_id_<?= $product_ID ?>\'">
<td class="title_cell"><?= $product_ID ?></td>
<td class="title_cell"><?= $product_title ?></td>
</tr>
<?php
endforeach;
wp_reset_postdata();
编辑:我尝试了一些不同的方法,使用了WP\\u Query,它也做了同样的事情
$args = array(
\'post_type\' => \'product_al\',
\'posts_per_page\' => -1,
\'orderby\' => \'ID\',
\'order\' => \'ASC\',
);
$the_query = new WP_Query( $args );
while ( $the_query->have_posts() ) : $the_query->the_post();
$product_title = ucfirst(get_the_title());
$product_ID = get_the_ID();
?>
<tr id="p_id_<?= $product_ID ?>\'">
<td class="title_cell"><?= $product_ID ?></td>
<td class="title_cell"><?= $product_title ?></td>
</tr>
<?php
endwhile;
wp_reset_postdata();
SO网友:lomokev
终于弄清楚了,我的帖子类型(product_al
) 不支持menu\\u order,但由于某些原因,一些旧帖子获得了menu\\u order的值。
任何新创建的帖子都会将其menu\\u顺序设置为0,这就是为什么它看起来有点混乱。
为了解决这个问题,我在phpmyadmin中运行了这个SQL来重置我的帖子类型上的menu\\u顺序(product_al
):
UPDATE wp_posts SET `menu_order` = \'0\' WHERE wp_posts.post_type = \'product_al\' ;
仍然不知道为什么我在
menu_order
, 我最近移动了这个网站,但不知道它是怎么发生的。
我发现有点奇怪的是WP_Query
即使您指定了要对其排序的查询,它仍然始终会添加ORDER BY wp_posts.menu_order
, 如果WordPress没有这样做,那就不会有问题了。