您想将置顶帖子添加到自定义帖子类型存档页面吗?
将最重要的自定义帖子放在页面顶部将有助于访问者更轻松地找到它们。但默认情况下,WordPress 为帖子提供粘性功能,但不适用于其他帖子类型。
在本文中,我们将了解如何在 WordPress 自定义帖子类型存档中添加粘性帖子。
为什么要让 WordPress 自定义帖子具有粘性?
如果您使用与标准帖子或页面不同的格式为WordPress 网站创建内容,那么您可能已经在使用自定义帖子类型。例如,如果您运营一个书评网站,那么您可能已经创建了一个书评帖子类型。
您可能希望将最重要的内容放在自定义帖子类型存档的顶部。这是展示深入且对时间敏感的内容以及最受欢迎的自定义帖子的最佳方式之一。
但是,虽然 WordPress 提供了粘性帖子功能,但该功能不适用于自定义帖子类型。
让我们看看如何向自定义帖子类型存档页面添加粘性功能。
在自定义帖子类型中添加置顶帖子
首先,您需要安装并激活Sticky Posts – Switch插件。有关更多详细信息,请参阅我们有关如何安装 WordPress 插件的分步指南。
激活后,您需要访问设置»置顶帖 – 切换页面来配置插件。只需选中您希望能够粘贴的自定义帖子类型旁边的框即可。
在本教程中,我们将检查“图书评论”帖子类型。
之后,您需要单击屏幕底部的“保存更改”按钮。
现在,当您访问该自定义帖子类型的管理页面时,您会注意到一个新列,您可以在其中将帖子设为粘性。您所需要做的就是单击您想要展示的帖子旁边的星号。
您现在已将帖子设为置顶。问题是 WordPress 只在主页上显示置顶帖子。接下来,我们将了解如何在存档页面上显示置顶帖子。
在自定义帖子类型档案中显示置顶帖子
要在自定义帖子存档页面的顶部显示置顶帖子,您需要创建一个新模板。
为此,您需要使用FTP 客户端或WordPress 托管控制面板中的文件管理器选项。如果您以前没有使用过 FTP,那么您可能需要查看我们有关如何使用 FTP 将文件上传到 WordPress 的指南。
您需要使用 FTP 客户端或文件管理器访问您的站点,然后转到该/wp-content/themes/YOURTHEME/
文件夹。
例如,如果您使用“二十二十一”主题,则需要导航到/wp-content/themes/twentytwentyone/
。
接下来,您需要在该文件夹中创建一个新文件,名称类似于archive-POSTTYPE.php
.
例如,如果您的自定义帖子类型 slug 是“bookreviews”,您应该创建一个名为archive-bookreviews.php
.
之后,您需要在同一文件夹中找到文件 archive.php。只需复制 archive.php 的内容并将其粘贴到您创建的新文件中即可。
下一步需要您将代码添加到主题文件中。如果您需要帮助向您的网站添加代码,请参阅我们有关如何在 WordPress 中添加自定义代码的指南。
准备好后,您需要将以下代码添加到主题的functions.php文件或代码片段插件中,例如WPCode(推荐):
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 | function wpb_cpt_sticky_at_top( $posts ) { // apply it on the archives only if ( is_main_query() && is_post_type_archive() ) { global $wp_query ; $sticky_posts = get_option( 'sticky_posts' ); $num_posts = count ( $posts ); $sticky_offset = 0; // Find the sticky posts for ( $i = 0; $i < $num_posts ; $i ++) { // Put sticky posts at the top of the posts array if ( in_array( $posts [ $i ]->ID, $sticky_posts ) ) { $sticky_post = $posts [ $i ]; // Remove sticky from current position array_splice ( $posts , $i , 1 ); // Move to front, after other stickies array_splice ( $posts , $sticky_offset , 0, array ( $sticky_post ) ); $sticky_offset ++; // Remove post from sticky posts array $offset = array_search ( $sticky_post ->ID, $sticky_posts ); unset( $sticky_posts [ $offset ] ); } } // Look for more sticky posts if needed if ( ! empty ( $sticky_posts ) ) { $stickies = get_posts( array ( 'post__in' => $sticky_posts , 'post_type' => $wp_query ->query_vars[ 'post_type' ], 'post_status' => 'publish' , 'nopaging' => true ) ); foreach ( $stickies as $sticky_post ) { array_splice ( $posts , $sticky_offset , 0, array ( $sticky_post ) ); $sticky_offset ++; } } } return $posts ; } add_filter( 'the_posts' , 'wpb_cpt_sticky_at_top' ); // Add sticky class in article title to style sticky posts differently function cpt_sticky_class( $classes ) { if ( is_sticky() ) : $classes [] = 'sticky' ; return $classes ; endif ; return $classes ; } add_filter( 'post_class' , 'cpt_sticky_class' ); |
由
此代码将您的置顶帖子移至顶部。如果您的主题使用该post_class()
功能,那么它还会添加一个“粘性”类,以便您可以使用 CSS设置粘性帖子的样式。
这就是书评自定义帖子类型存档在我们的演示网站上的外观。在添加代码之前,置顶帖位列第二。
现在,您可以使用.sticky
主题style.css
样式表中的类来设置置顶帖子的样式。这是一个例子:
123456 | .sticky { background-color : #ededed ; background-image : url ( 'http://example.com/wp-content/uploads/featured.png' ); background-repeat : no-repeat ; background-position : right top ; } |
由
这是我们演示网站的更新屏幕截图。
我们希望本教程可以帮助您了解如何在 WordPress 自定义帖子类型存档中添加置顶帖子。您可能还想查看我们有关如何加快 WordPress 网站速度的指南或我们专家精选的最佳 WordPress 调查插件。