通过自定义字段重新排序 WordPress 文章方法

 更新时间:2021年09月20日 14:08:24   投稿:WDC  
在本文中,我将向您展示如何通过自定义字段更改文章的顺序。WordPress 中文章的默认顺序基于发布日期,并按时间倒序显示。这意味着它将在顶部显示最新的文章。

您想更改网站博客页面上 WordPress 文章的顺序吗?那么您就在正确的地方学习此功能并更改文章的顺序。因此,在本文中,我将向您展示如何通过自定义字段更改文章的顺序。

WordPress 中文章的默认顺序基于发布日期,并按时间倒序显示。这意味着它将在顶部显示最新的文章。

通过为 WordPress 添加自定义字段,您可以根据该自定义字段更改顺序。

我将在下面的分步指南中解释如何创建自定义字段并更改博客页面上文章的顺序。

按自定义字段排序 WordPress 文章

让我们开始在帖子中创建一个自定义字段,并使用文章 ID 保存值并显示它们。

在发布元框中创建自定义字段

我们将在编辑文章页面右侧边栏的发布元框中创建一个数字自定义字段。字段值将保存在 post meta 表中,我们稍后将使用它来更改文章顺序。

有关发布元框中的自定义字段,请参阅下面的代码。

add_action('post_submitbox_misc_actions', 'add_publish_meta_custom_field');
function add_publish_meta_custom_field($post_obj) {
 
  	global $post;
  	$post_type = 'post';
  	$value = get_post_meta($post_obj->ID, 'post_order', true); 
  	$val = ($value) ? $value : "0";
  	if($post_type==$post->post_type) {

	    echo '<div class="misc-pub-section misc-pub-section-last">'
	         .'<label>Post Order <input name="post_order" type="number" step="1" min="0" id="post_order" value="'.$val.'" class="small-text"></label>'
	         .'</div>';
  	}
}

以上将在发布元框中创建自定义字段,您将看到如下图所示的字段。

在发布元框中创建自定义字段,您将看到如下图所示的字段。

发布元框中的自定义字段

保存自定义字段的值

现在,我们必须保存Post Order字段的值。所以我们将save_post在保存文章之前运行动作钩子,并update_post_meta()用于保存相应文章的字段值。

update_post_meta()操作将值与文章 ID 一起保存在wp_postmeta表中。

好的。请参阅代码以保存该自定义字段的值。

add_action( 'save_post', 'save_publish_meta_custom_field', 10 , 3);
function save_publish_meta_custom_field($post_id, $post, $update) {
 
  	$post_type = 'post';
  	if ( $post_type != $post->post_type ) {
    	return;
  	}
 
  	if ( wp_is_post_revision( $post_id ) ) {
    	return;
  	}

  	if(isset($_POST['post_order'])) {
    	update_post_meta($post_id, 'post_order', $_POST['post_order']);
  	}

}

上面的代码将自定义字段值保存在数据库中,并将显示在该输入数字字段中。

自定义字段中保存的值

自定义字段中保存的值

按自定义字段更改 WordPress 文章的顺序

现在,我们将使用我们自己的顺序值更改 WordPress 文章的默认顺序。在显示结果之前,我们将运行pre_get_posts动作钩子来修改现有的WP_Query文章。

pre_get_posts给我们一些解决方案来修改wp_query无需编写自定义WP_Query。

function pre_custom_post_order_sort( $query ){
  if ( is_home() && $query->is_main_query() ){
    $query->set( 'orderby', 'meta_value' );
    $query->set( 'meta_key', 'post_order' );
    $query->set( 'order' , 'ASC' );
  }
}
add_action( 'pre_get_posts' , 'pre_custom_post_order_sort' );

上面的代码示例将更改博客页面或主页上的 WordPress 文章顺序。

我们在这篇文章中检查了一个主要查询和主页,然后使用meta_key元值设置查询顺序。它将检查文章是否具有自定义字段值,并根据字段值将它们置于顶部。

在模板文件中按自定义字段排序 WordPress 文章

您还可以创建自己的自定义WP_Query以按顺序显示文章。

您必须创建一个WordPress 自定义模板页面,然后您可以在该模板中编写自己的查询。

在此处查看有关如何在 WordPress 中创建自定义页面模板的分步指南。

好的。您现在有一个自定义模板文件。因此,在该模板中编写以下代码。

$args = array(
    'post_type' => 'post',
    'meta_key' => 'post_order',
    'orderby' => 'meta_value',
    'order' => 'ASC'
);

$query = new WP_query ( $args );

if ( $query->have_posts() ) {
    while ($query->have_posts() ) {
        $query->the_post();

        if ( !empty(get_post_meta( $post->ID, 'post_order', true )) ) {
            the_title();
        }

    wp_reset_postdata();
}

上面的代码将按自定义字段值显示文章标题顺序,并根据自定义字段值将文章置于顶部。

您还可以在functions.php 文件中创建上述代码的简码,并在小工具、页面或您想要显示文章的任何地方使用该简码。

就是这样。您已完成按自定义字段值显示 WordPress 文章顺序。

好了至此关于通过自定义字段重新排序 WordPress 文章方法就结束了,更多关于WordPress技巧请查看下面的相关文章

相关文章

  • 详解VScode 配置为 LaTeX 编辑器(IDE)

    详解VScode 配置为 LaTeX 编辑器(IDE)

    这篇文章主要介绍了详解VScode 配置为 LaTeX 编辑器,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-03-03
  • IDEA 2020 设置项目集成git 及svn和git之间的切换问题

    IDEA 2020 设置项目集成git 及svn和git之间的切换问题

    这篇文章主要介绍了IDEA 2020 设置项目集成git 及svn和git之间的切换问题,本文通关图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-09-09
  • 一文详解VSCode安装配置使用(最新版超详细保姆级含插件)

    一文详解VSCode安装配置使用(最新版超详细保姆级含插件)

    安装VScode就很简单了,一路NEXT就可以了,重点是配置使用以及插件推荐,这篇文章主要给大家介绍了关于VSCode安装配置使用的相关资料,本文是最新版超详细保姆级含插件,需要的朋友可以参考下
    2023-05-05
  • git 入门教程之本地仓库和远程仓库的本质介绍

    git 入门教程之本地仓库和远程仓库的本质介绍

    本地仓库和远程仓库在本质上没有太大区别,只不过一个是本地电脑,一个是远程电脑.这篇文章主要介绍了git 入门教程之本地和远程仓库的本质介绍,需要的朋友可以参考下
    2020-08-08
  • 解析scratch3.0二次开发之scratch-blocks免编译修改问题

    解析scratch3.0二次开发之scratch-blocks免编译修改问题

    大家在使用scratch-blocks编译时会遇到scratch-gui依赖的scratch-blocks模块在安装的时候编译会报错,针对这个问题我们该怎么解决呢,下面小编给大家带来了scratch3.0二次开发之scratch-blocks免编译修改方法,感兴趣的朋友一起看看吧
    2021-08-08
  • VScode敲代码时自动导入包的解决方案

    VScode敲代码时自动导入包的解决方案

    这篇文章主要介绍了VScode敲代码时自动导入包的解决方案,文中通过图文介绍的非常详细,对大家学习或者使用vscode具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-09-09
  • 解决Unable to access ''https://gitee.com/自己的项目/'': Could not resolve host: gitee.com问题

    解决Unable to access ''https://gitee.com/自己的项目/'': Could not r

    这篇文章主要介绍了解决Unable to access 'https://gitee.com/自己的项目/': Could not resolve host: gitee.com问题,需要的朋友可以参考下
    2020-09-09
  • 分布式系统CAP定理中的P原理解析

    分布式系统CAP定理中的P原理解析

    这篇文章主要为大家介绍了分布式系统CAP定理中的P原理解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-02-02
  • 防止删库跑路及高级代码投毒技巧

    防止删库跑路及高级代码投毒技巧

    这篇文章主要为大家介绍了防止删库跑路及高级代码投毒技巧详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-07-07
  • 怎样写好commit message提高业务效率

    怎样写好commit message提高业务效率

    这篇文章主要为大家介绍了如何写好commit message帮助业务团队提高效率方法详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-05-05

最新评论