内容营销

WordPress:如何按字母顺序对自定义帖子类型的帖子进行排序

使用新主题(和子主题)我已经实现了 Martech Zone,我不得不重建并重新编码我为之构建的自定义帖子类型 缩略语. 我优化了代码以插入一些额外的自定义字段,并且我不得不重新设计存档和分类模板以更好地显示列出的首字母缩略词。

在我的最后一个主题(其开发人员停止支持)中,这些页面得到了相当多的关注,因为它们有很好的文档记录,甚至显示了与首字母缩写词相关的文章。 我将继续将该功能迁移到新站点,我什至想使用悬停方法来显示首字母缩略词定义,而不是让访问者单击首字母缩略词链接。 够了……

自定义帖子类型排序

因为 WordPress 最初是为博客使用而设计的,所以任何帖子类型(包括自定义帖子类型)的默认设置都是按时间倒序排列帖子。 虽然这适用于新闻和文章,但它对词汇表或首字母缩略词列表等内容不利。 我希望我的首字母缩略词按字母数字顺序排列,而不是按在 WordPress 中输入它们的日期排列。

与 WordPress 中的几乎所有功能一样,这可以使用 WordPress API 轻松定制。 在我的 的functions.php 在我的子主题文件中,我添加了以下代码:

add_action( 'pre_get_posts', function ( $query ) {
	if ( $query->is_archive() && $query->is_main_query() ) { 
	  if ( get_query_var( 'post_type' ) == 'acronym' ) { 
		$query->set( 'order', 'ASC' );
		$query->set( 'orderby', 'title' );
	  };
	};
} );

pre_get_posts 函数是在查询帖子时执行的操作。 在上面的代码中,我能够确保对 自定义后类型 of 缩写 具体设置为按标题升序排序。

这不仅在存档和分类页面的输出中设置此顺序,它甚至在 WordPress 的管理面板中按字母数字顺序对自定义帖子类型进行排序。

自定义帖子类型按标题字母顺序排序

因为您正在设置默认查询参数,所以您还可以添加其他变量,例如要检索的记录数 (posts_per_page). 对于首字母缩略词,我一次返回 25 条记录,而我在网站的其余部分默认为 10 条记录。

如果您只想在您的存档模板上按字母顺序发布自定义帖子类型,而不是在您的 WordPress 管理面板中,您可以将该代码更新为:

function acronym_archive_orderby_title($query) {
    // Check if it's the main query, an archive page, and the post type is 'acronym'
    if ($query->is_main_query() && is_post_type_archive('acronym') && !is_admin()) {
        // Order by title alphabetically
        $query->set('orderby', 'title');
        $query->set('order', 'ASC');
    }
}
add_action('pre_get_posts', 'acronym_archive_orderby_title');

自定义帖子类型可以帮助您显着扩展站点的功能……并且这一切都可以在您的子主题(或核心主题)中使用一些简单的代码来完成,而无需任何插件。 事实上,我建议不要使用插件,因为它们通常会增加计算开销,这可能会降低您网站的速度。 我现在正在一个客户网站上工作,他们想在其中加入职位空缺……而这段代码也会对他们派上用场!

Douglas Karr

Douglas Karr 是...的创始人 Martech Zone 以及公认的数字化转型专家。 Douglas 帮助创办了几家成功的 MarTech 初创公司,协助对超过 5 亿美元的 MarTech 收购和投资进行尽职调查,并继续推出他自己的平台和服务。 他是 Highbridge,一家数字化转型咨询公司。 道格拉斯还是一本傻瓜指南和商业领导力书籍的出版作者。

相关文章

你觉得呢?

本网站使用Akismet来减少垃圾邮件。 了解您的数据如何处理.

关闭

检测到Adblock

Martech Zone 我们能够免费为您提供这些内容,因为我们通过广告收入、联属链接和赞助从我们的网站中获利。 如果您在浏览我们的网站时删除广告拦截器,我们将不胜感激。