在Wordpress中的特定页面上按字母顺序对帖子进行排序

时间:2019-12-12 01:16:15

标签: php wordpress sorting posts

编辑:找到了我的旧代码,该代码可以正常工作,并以这种方式进行了修复。也将使用插件添加自定义功能,以避免在下一次主题更新时再次令人失望(感谢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问题,还是我做错了?希望任何人都能提供帮助,我现在已经尝试了很多不同的方法。干杯:)

1 个答案:

答案 0 :(得分:1)

我建议创建一个子主题,您将在其中创建一个新页面模板以用于“食谱”页面。

首先,使用Child Theme Configurator插件设置新的子主题,不要忘记从“父主题”到“子主题”选项中选择“复制菜单”,“小部件”和其他“定制程序设置”以保留设置:

copy theme settings to child theme

然后,从子主题配置器的“文件”选项卡中,复制用于博客的页面模板(或“食谱”页面中使用的页面模板)。

此后,将文件名以及写在页面模板文件顶部的名称(在模板名称之后)更改为按字母顺序排列的配方或下一个您希望使用的名称:

/*
 * Template Name: recipes ordered alphabetically
 */

您可以将以下参数添加到查询中:

$ args ['orderby'] ='title'; $ args ['order'] ='ASC';

然后将“食谱”页面模板更改为新创建的页面模板。 有关更详细的答案,请插入页面模板中使用的代码。

相关问题