> WordPress Post系列插件使您能够串行组织帖子以创建书籍或课程。它为用户提供了学习的途径。帖子系列插件也可以用来将长帖子分为多个部分。
> 在本教程中,我将向您展示如何创建一个用于显示一系列帖子的插件。您还可以将相同的代码集成到主题功能中。>
钥匙要点- >利用自定义帖子类型,而不是自定义分类法来有效地创建和管理WordPress的帖子系列,增强用户体验和内容组织。
- >实现具有PHP文件和可选CSS的插件结构,可确保WordPress识别并正确安装您的自定义插件。
- 在WordPress管理中包括元框,以允许作者将帖子分配给特定的系列并串行订购,从而改善该系列的结构完整性。
- >通过使用“ Pre_get_posts”操作修改主查询循环,在您的网站上扩展了Post系列的可见性,确保串联的索引和存档页面包括。
- >通过将导航链接添加到上一个和下一个帖子,提高用户参与度和每个访问者的页面视图,来增强系列中的单个帖子。
- >分类学与帖子系列
因此,我们需要一个文章系列,这实际上是一个以串行方式包含其他帖子的帖子。
>如何创建帖子系列
>创建帖子系列有许多不同的方法。在WordPress.org上找到的流行帖子系列插件使用WordPress帖子上的自定义分类法来创建帖子系列,但是在本教程中,我将使用自定义帖子类型。
插件文件结构>创建一个名为SitePoint-Post系列的插件目录并将两个文件放在此中,名为SitePoint-Post-series.php和sitepoint-post-series.css.css.
>在sitepoint-post series.php文件中,将代码放在下面,以便WordPress识别目录为插件,并让您安装它。
>您还可以将POST系列功能添加到主题。在这种情况下,您需要在本教程中的所有代码,主题的functions.php file。
如何创建帖子系列自定义帖子类型首先,我们需要创建一个自定义帖子类型,其中每个自定义帖子类型代表帖子系列。
>将下面的代码放在名为sitepoint-post series.php的文件中
<span><span><?php </span></span><span> </span><span><span>/* </span></span><span><span>Plugin Name: SitePoint Post Series </span></span><span><span>Plugin URI: https://www.sitepoint.com/ </span></span><span><span>Description: This used is used to create a post series. </span></span><span><span>Version: 1.0 </span></span><span><span>Author: Narayan Prusty </span></span><span><span>*/</span></span></span>
>在这里,我们创建了一种自定义帖子类型,该类型具有与WordPress帖子使用的相同分类法。这样您也可以创建一个类别帖子系列。
>>我们还添加了激活和停用钩子以齐平的重写规则。这是为了使帖子系列可以在前端查看。
>这是我们的自定义帖子类型在管理屏幕上的外观:

现在,我们需要将元框添加到WordPress帖子admin接口。因此,作者可以将帖子附加到帖子系列中,并提供序列号以对帖子系列中的帖子进行分类。
这是在帖子系列中添加元框的代码:
在这里,我们在元框中添加了两个字段。作者使用文本字段输入序列号,并使用下拉列表来选择帖子所属的帖子名称。如果您不想将帖子添加到帖子系列中,则应将一个或两个字段留为空白。
<span>function sitepoint_post_series_custom_post_type() </span><span>{ </span> <span>register_post_type("sitepoint-postseries", array( </span> <span>"labels" => array("name" => __("Post Series"), "singular_name" => __("Post Series")), </span> <span>"public" => true, </span> <span>"has_archive" => true, </span> <span>"rewrite" => array("slug"=> "post-series"), </span> <span>"supports" => array("editor", "title", "excerpt", "thumbnail", "comments"), </span> <span>"capability_type" => "post", </span> <span>"publicly_queryable" => true, </span> <span>"taxonomies" => array("category", "post_tag"), </span> <span>) </span> <span>); </span><span>} </span> <span>add_action("init", "sitepoint_post_series_custom_post_type", 2); </span> <span>/* Flush Rewrite Rules */ </span> <span>function sitepoint_post_series_activation() </span><span>{ </span> <span>sitepoint_post_series_custom_post_type(); </span> <span>flush_rewrite_rules(); </span><span>} </span> <span>register_activation_hook( __FILE__, "sitepoint_post_series_activation"); </span><span>register_deactivation_hook( __FILE__, "sitepoint_post_series_activation");</span>这是在管理邮政屏幕上的外观:
现在,我们需要在保存表单时保存元框字段。这是这样做的代码:

>在这里我们保存元框内容,然后调用函数sitepoint_post_series_series_series_series_save_settings具有不同的参数值,具体取决于用户是删除系列,添加系列或更改系列。
这是sitepoint_post_series_save_settings函数/* Add Custom Meta Boxes in WordPress Posts */ function sitepoint_post_series_meta_box_markup($object) { wp_nonce_field(basename(__FILE__), "sitepoint-postseries"); ?> <span><span><span><div>> <span><span><span><label> for<span>="sitepoint-postseries-serial-number"</span>></label></span>Serial Number<span><span></span>></span> </span> <span><span><span><br>></span> </span> <span><span><span><input> name<span>="sitepoint-postseries-serial-number"</span> type<span>="text"</span> value<span>="<span><?php echo get_post_meta($object->ID, "sitepoint-postseries-serial-number", true); ?></span>"</span>></span> </span> <span><span><span><br>></span> </span> <span><span><span><label> for<span>="sitepoint-postseries-id"</span>></label></span>Name<span><span></span>></span> </span> <span><span><span><br>></span> </span> <span><span><span><select> name<span>="sitepoint-postseries-id"</span>></select></span> </span> <span><span><span><option> value<span>=""</span>></option></span>-<span><span></span>></span> </span> <span><span><?php </span></span><span> <span>$posts = get_posts("post_type=sitepoint-postseries"); </span></span><span> <span>$selected_series = get_post_meta($object->ID, "sitepoint-postseries-id", true); </span></span><span> <span>foreach($posts as $post) </span></span><span> <span>{ </span></span><span> <span>$id_post = $post->ID; </span></span><span> <span>if($id_post == $selected_series) </span></span><span> <span>{ </span></span><span> <span>?></span> </span> <span><span><span><option> selected value<span>="<span><?php echo $post->ID; ?></span>"</span>></option></span><span><?php echo $post->post_title; ?></span><span><span></span>></span> </span> <span><span><?php </span></span><span> <span>} </span></span><span> <span>else </span></span><span> <span>{ </span></span><span> <span>?></span> </span> <span><span><span><option> value<span>="<span><?php echo $post->ID; ?></span>"</span>></option></span><span><?php echo $post->post_title; ?></span><span><span></span>></span> </span> <span><span><?php </span></span><span> <span>} </span></span><span> <span>} </span></span><span> <span>?></span> </span> <span><span><span></span>></span> </span> <span><span><span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span> </div></span>></span> </span> <span><span><?php </span></span><span><span>} </span></span><span> </span><span><span>function sitepoint_post_series_custom_meta_box() </span></span><span><span>{ </span></span><span> <span>add_meta_box("sitepoint-postseries", "Post Series", "sitepoint_post_series_meta_box_markup", "post", "side", "low", null); </span></span><span><span>} </span></span><span> </span><span><span>add_action("add_meta_boxes", "sitepoint_post_series_custom_meta_box");</span></span></span>的代码
此函数创建一个字符串,该字符串存储属于特定系列的WordPress Post ID。然后将字符串作为WordPress设置存储。
>现在我们完成了所有管理区域代码。您现在应该能够创建帖子并将其分配给系列。并且还为每个系列分配类别和标签。
<span>/* Callback to Save Meta Data */ </span> <span>function sitepoint_post_series_save_custom_meta_box($post_id, $post, $update) </span><span>{ </span> <span>if(!isset($_POST["sitepoint-postseries"]) || !wp_verify_nonce($_POST["sitepoint-postseries"], basename(__FILE__))) </span> <span>return $post_id; </span> <span>if(!current_user_can("edit_post", $post_id)) </span> <span>return $post_id; </span> <span>if(defined("DOING_AUTOSAVE") && DOING_AUTOSAVE) </span> <span>return $post_id; </span> <span>$slug = "post"; </span> <span>if($slug != $post->post_type) </span> <span>return; </span> <span>$serial_number = null; </span> <span>if(isset($_POST["sitepoint-postseries-serial-number"])) </span> <span>{ </span> <span>$serial_number = $_POST["sitepoint-postseries-serial-number"]; </span> <span>} </span> <span>else </span> <span>{ </span> <span>$serial_number = ""; </span> <span>} </span> <span>update_post_meta($post_id, "sitepoint-postseries-serial-number", $serial_number); </span> <span>$series_id = null; </span> <span>if(isset($_POST["sitepoint-postseries-id"])) </span> <span>{ </span> <span>$series_id = $_POST["sitepoint-postseries-id"]; </span> <span>} </span> <span>else </span> <span>{ </span> <span>$series_id = ""; </span> <span>} </span> <span>$previous_series_id = get_post_meta($post_id, "sitepoint-postseries-id", true); </span> <span>update_post_meta($post_id, "sitepoint-postseries-id", $series_id); </span> <span>//no series, removing series, adding new series or changing series </span> <span>if($previous_series_id == "" && $series_id == "") </span> <span>{ </span> <span>sitepoint_post_series_save_settings($series_id, $serial_number, $post_id); </span> <span>} </span> <span>else if($previous_series_id != "" && $series_id == "") </span> <span>{ </span> <span>sitepoint_post_series_save_settings($previous_series_id, "", $post_id); </span> <span>} </span> <span>else if($previous_series_id == "" && $series_id != "") </span> <span>{ </span> <span>sitepoint_post_series_save_settings($series_id, $serial_number, $post_id); </span> <span>} </span> <span>else if($previous_series_id != "" && $series_id != "") </span> <span>{ </span> <span>sitepoint_post_series_save_settings($previous_series_id, "", $post_id); </span> <span>sitepoint_post_series_save_settings($series_id, $serial_number, $post_id); </span> <span>} </span><span>} </span> <span>add_action("save_post", "sitepoint_post_series_save_custom_meta_box", 10, 3);</span>
现在,让我们编码前端以显示帖子系列。
索引类型在索引和存档页面中尚不可见。为了使其在这些页面上可见,您只需要添加以下代码:
>在这里,我们使用pre_get_posts挂钩将帖子系列添加到$ q变量,主循环使用该帖子显示帖子。
显示帖子系列的帖子
我们需要过滤帖子类型的内容,并添加属于该系列的帖子。这是在帖子系列页面中添加帖子系列的帖子的代码。
<span>/* Store WordPress posts and Post Series CTY relations as WordPress Settings. */ </span> <span>function sitepoint_post_series_save_settings($series_id, $serial_number, $post_id) </span><span>{ </span> <span>if($series_id != "" && $serial_number != "") </span> <span>{ </span> <span>$post_series_list = get_option("post_series_" . $series_id . "_ids", ""); </span> <span>if($post_series_list == "") </span> <span>{ </span> <span>$post_series_list_array = array($post_id); </span> <span>$post_series_list = implode (", ", $post_series_list_array); </span> <span>update_option("post_series_" . $series_id . "_ids", $post_series_list); </span> <span>} </span> <span>else </span> <span>{ </span> <span>$post_series_list_array = explode(',', $post_series_list); </span> <span>if(in_array($post_id, $post_series_list_array)) </span> <span>{ </span> <span>//do nothing </span> <span>} </span> <span>else </span> <span>{ </span> <span>$post_series_list_array[] = $post_id; </span> <span>$post_series_list = implode (", ", $post_series_list_array); </span> <span>update_option("post_series_" . $series_id . "_ids", $post_series_list); </span> <span>} </span> <span>} </span> <span>} </span> <span>else if($series_id == "" || $serial_number == "") </span> <span>{ </span> <span>$post_series_list = get_option("post_series_" . $series_id . "_ids", ""); </span> <span>if($post_series_list == "") </span> <span>{ </span> <span>} </span> <span>else </span> <span>{ </span> <span>$post_series_list_array = explode(',', $post_series_list); </span> <span>if(in_array($post_id, $post_series_list_array)) </span> <span>{ </span> <span>//here remove the post id from array. </span> <span>if(($key = array_search($post_id, $post_series_list_array)) !== false) { </span> <span>unset($post_series_list_array[$key]); </span> <span>} </span> <span>$post_series_list = implode (", ", $post_series_list_array); </span> <span>update_option("post_series_" . $series_id . "_ids", $post_series_list); </span> <span>} </span> <span>else </span> <span>{ </span> <span>} </span> <span>} </span> <span>} </span><span>}</span>这将使用HTML无序列表标签显示帖子。对于没有图像的帖子,我们正在加载Lorempixel Cloud Service的图像来生成随机纹理图像。
>我们正在从设置字符串中检索文章系列的帖子,我们在节省元数据时保存了帖子。
>将帖子系列信息添加到帖子>我们还可以在属于帖子系列的帖子上添加一个帖子系列框,以向用户表明该帖子属于特定的帖子系列。这是执行此操作的代码:
<span><span><?php </span></span><span> </span><span><span>/* </span></span><span><span>Plugin Name: SitePoint Post Series </span></span><span><span>Plugin URI: https://www.sitepoint.com/ </span></span><span><span>Description: This used is used to create a post series. </span></span><span><span>Version: 1.0 </span></span><span><span>Author: Narayan Prusty </span></span><span><span>*/</span></span></span>在这里,我们只是显示一个帖子名称,本文的哪一部分来自该系列。
>您还可以使用以下实现sitepoint_post_series_post_content_filter函数添加该系列的下一篇和上一篇文章:
>这是WordPress.org上的一些插件,使您可以创建一个帖子系列。我已经将每个插件与上面创建的插件进行了比较。
如果您拥有开发博客,则可以使用此插件来创建自己的帖子系列,从而提高您的参与度和转化率。您甚至可以使用它将大型帖子分为多个帖子。 经常询问有关为WordPress创建帖子插件的问题
> 我可以自定义我的文章的外观和感觉网站? >创建帖子系列可以显着改善您的网站SEO。通过将相关帖子分组在一起,您可以创建一个搜索引擎喜欢的内部链接网络。它还增加了您网站上的停留时间,因为读者更有可能阅读系列中的多个帖子。 可以在发布之后将帖子添加到系列中?随时随地的新帖子。大多数帖子系列插件都允许您轻松管理和更新系列,确保您的内容保持相关和最新。 > <span>function sitepoint_post_series_custom_post_type()
</span><span>{
</span> <span>register_post_type("sitepoint-postseries", array(
</span> <span>"labels" => array("name" => __("Post Series"), "singular_name" => __("Post Series")),
</span> <span>"public" => true,
</span> <span>"has_archive" => true,
</span> <span>"rewrite" => array("slug"=> "post-series"),
</span> <span>"supports" => array("editor", "title", "excerpt", "thumbnail", "comments"),
</span> <span>"capability_type" => "post",
</span> <span>"publicly_queryable" => true,
</span> <span>"taxonomies" => array("category", "post_tag"),
</span> <span>)
</span> <span>);
</span><span>}
</span>
<span>add_action("init", "sitepoint_post_series_custom_post_type", 2);
</span>
<span>/* Flush Rewrite Rules */
</span>
<span>function sitepoint_post_series_activation()
</span><span>{
</span> <span>sitepoint_post_series_custom_post_type();
</span> <span>flush_rewrite_rules();
</span><span>}
</span>
<span>register_activation_hook( __FILE__, "sitepoint_post_series_activation");
</span><span>register_deactivation_hook( __FILE__, "sitepoint_post_series_activation");</span>
将我们的插件与其他帖子系列插件进行比较
组织系列:组织系列为WordPress帖子添加了自定义分类法。当您查看自定义分类法时,它会添加到存档页面的标题,这似乎是邮政系列的标题。帖子系列中的帖子像分类法一样显示,从用户角度来看,这可能不是很好。相比之下,我们的插件使用自定义帖子类型显示单个帖子系列,以便您可以将特色图像,文本或标记内容(以及更多)添加到帖子系列中。与我们的插件中的存档页面相比,帖子系列的帖子看起来不同。>
可以随时评论您对下面插件的经历。
>
>
> POST系列插件与标准WordPress类别和标签有何不同?
,而WordPress类别和标签确实允许您将相关的帖子分组在一起,但它们缺乏帖子系列插件提供的顺序结构。使用Post系列插件,您可以以特定的顺序订购帖子,从而使读者更容易遵循故事情节或结构化的学习路径。
> 是的,大多数帖子系列插件都提供自定义选项。您可以更改布局,颜色,字体和其他设计元素,以匹配您网站的整体美学。一些插件还允许您添加自定义CSS以进行更高级的自定义。
创建帖子系列如何影响我的网站的SEO?我可以在WordPress网站上创建多个帖子系列吗?您可以根据需要创建尽可能多的帖子系列。这对于涵盖多个主题或具有不同类型的序列化内容的网站特别有用。
我可以在多作者WordPress网站上使用帖子系列插件吗? >
是的,可以在多作者站点上使用后插件。它可以是管理和组织来自多个作者的内容的绝佳工具,确保所有帖子的一致性和连贯性。是的,有几个免费的帖子系列可用于WordPress的插件。但是,请记住,免费插件可能不会提供像高级插件一样多的功能或支持。始终选择一个最适合您需求和预算的插件。
>
以上是为WordPress创建帖子插件的详细内容。更多信息请关注PHP中文网其他相关文章!

在 WordPress 网站上启用评论功能,可以为访客提供参与讨论和分享反馈的平台。为此,请按照以下步骤操作:启用评论:在仪表盘中,导航至“设置”>“讨论”,并选中“允许评论”复选框。创建评论表单:在编辑器中,单击“添加块”并搜索“评论”块,将其添加到内容中。自定义评论表单:通过设置标题、标签、占位符和按钮文本来定制评论块。保存更改:单击“更新”以保存评论框并将其添加到页面或文章中。

如何复制 WordPress 子站?步骤:在主站创建子站。在主站克隆子站。将克隆导入目标位置。更新域名(可选)。分开插件和主题。

在WordPress中创建自定义页头的步骤如下:编辑主题文件“header.php”。添加您的网站名称和描述。创建导航菜单。添加搜索栏。保存更改并查看您的自定义页头。

WordPress 网站中启用评论功能:1. 登录管理面板,转到 "设置"-"讨论",勾选 "允许评论";2. 选择显示评论的位置;3. 自定义评论表单;4. 管理评论,批准、拒绝或删除;5. 使用 <?php comments_template(); ?> 标签显示评论;6. 启用嵌套评论;7. 调整评论外形;8. 使用插件和验证码防止垃圾评论;9. 鼓励用户使用 Gravatar 头像;10. 创建评论指

可以通过 WordPress 安装 FTP 插件,配置 FTP 连接,然后使用文件管理器上传源码。步骤包括:安装 FTP 插件、配置连接、浏览上传位置、上传文件、检查上传成功。

如何复制 WordPress 代码?从管理界面复制:登录 WordPress 网站,导航到目标位置,选择代码并按 Ctrl C (Windows)/Command C (Mac) 复制代码。从文件复制:使用 SSH 或 FTP 连接到服务器,导航到主题或插件文件,选择代码并按 Ctrl C (Windows)/Command C (Mac) 复制代码。

WordPress 错误解决指南:500 内部服务器错误:禁用插件或检查服务器错误日志。404 未找到页面:检查 permalink 并确保页面链接正确。白屏死机:增加服务器 PHP 内存限制。数据库连接错误:检查数据库服务器状态和 WordPress 配置。其他技巧:启用调试模式、检查错误日志和寻求支持。预防错误:定期更新 WordPress、仅安装必要插件、定期备份网站和优化网站性能。

如何在 WordPress 中关闭评论?特定文章或页面:在编辑器中取消选中“讨论”下的“允许评论”。整个网站:在“设置”->“讨论”中取消选中“允许发表评论”。使用插件:安装 Disable Comments 等插件禁用评论。编辑主题文件:通过编辑 comments.php 文件移除评论表单。自定义代码:使用 add_filter() 函数禁用评论。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

PhpStorm Mac 版本
最新(2018.2.1 )专业的PHP集成开发工具

ZendStudio 13.5.1 Mac
功能强大的PHP集成开发环境

WebStorm Mac版
好用的JavaScript开发工具

安全考试浏览器
Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。

记事本++7.3.1
好用且免费的代码编辑器