问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

如何通过自定义字段重新排序WordPress文章

创作时间:
作者:
@小白创作中心

如何通过自定义字段重新排序WordPress文章

引用
CSDN
1.
https://blog.csdn.net/Bluehost_China/article/details/124676705

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

发布元框中的自定义字段

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

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">' .
             'Post Order <input name="post_order" type="number" step="1" min="0" id="post_order" value="' . $val . '" class="small-text">' .
             '</div>';
    }
}

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

保存自定义字段的值

现在,我们必须保存PostOrder字段的值。所以我们将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文章顺序。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号