1. 程式人生 > 程式設計 >通過自定義欄位重新排序 WordPress 文章方法

通過自定義欄位重新排序 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_www.cppcns.comaction( 'save_postwww.cppcns.com','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['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,true )) ) {
            the_title();
        }

    wp_reset_postdata();
}

上面的程式碼將按自定義欄位值顯示文章標題順序,並根據自定義欄位值將文章置於頂部。

您還可以在functions. 檔案中建立上述程式碼的簡碼,並在小工具、頁面或您想要顯示文章的任何地方使用該簡碼。

就是這樣。您已完成按http://www.cppcns.com自定義欄位值顯示 WordPress 文章順序。

好了至此關於通過自定義欄位重新排序 WordPress 文章方法就結束了,更多關於WordPress技巧請檢視下面的相關文章