编辑:找到了我的旧代码,该代码可以正常工作,并以这种方式进行了修复。也将使用插件添加自定义功能,以避免在下一次主题更新时再次令人失望(感谢Heba)。和代码:
function foo_modify_query_order( $query ) {
if (get_the_ID()==80) { $query->set( 'orderby', 'title' ); $query->set( 'order', 'ASC' ); } } add_action( 'pre_get_posts', 'foo_modify_query_order' );
因此,这应该是一个简单的任务,但是我不知道为什么它现在无法正常工作。我已经尝试了所有方法,每个Google链接都是紫色的,所以现在我希望有人可以告诉我它是什么,我做错了。
我首先要提到它是Divi主题,但是几个月前我确实使它起作用了,但是却忘记了如何操作,现在我无法重新创建它。
我只是想按字母顺序(A-Z)对主要查询进行排序,但只能在一个称为食谱的页面上进行排序。该网站将所有食谱及其博客文章作为帖子发布,但是博客文章按日期排序并显示在单独的页面上,效果很好。
但是,当我尝试更改它时,正在发生奇怪的事情。如果我使用此代码,则它确实有效,但是博客页面也会按字母顺序排序,这是不应该的。
function foo_modify_query_order( $query ) {
if (is_archive()) {
$query->set( 'orderby', 'title' );
$query->set( 'order', 'ASC' );
}
}
add_action( 'pre_get_posts', 'foo_modify_query_order' );
哪个是我发布的帖子?在我尝试过的所有方法中,只有在使用is_archive()时,它才会排序。
如果我尝试使其首先检查特定页面,例如&& is_page('recipes')
,则会收到错误消息。
如果我仅添加if (is_page('recipes')){ echo 'Recipes'; }
即可,但是如果尝试在内部添加排序,则一无所获。
所以部分起作用,但是我不能将两者结合起来。是Divi问题,还是我做错了?希望任何人都能提供帮助,我现在已经尝试了很多不同的方法。干杯:)
答案 0 :(得分:1)
我建议创建一个子主题,您将在其中创建一个新页面模板以用于“食谱”页面。
首先,使用Child Theme Configurator插件设置新的子主题,不要忘记从“父主题”到“子主题”选项中选择“复制菜单”,“小部件”和其他“定制程序设置”以保留设置:
然后,从子主题配置器的“文件”选项卡中,复制用于博客的页面模板(或“食谱”页面中使用的页面模板)。
此后,将文件名以及写在页面模板文件顶部的名称(在模板名称之后)更改为按字母顺序排列的配方或下一个您希望使用的名称:
/*
* Template Name: recipes ordered alphabetically
*/
您可以将以下参数添加到查询中:
$ args ['orderby'] ='title'; $ args ['order'] ='ASC';
然后将“食谱”页面模板更改为新创建的页面模板。 有关更详细的答案,请插入页面模板中使用的代码。