自定義帖子類型中的父子關係

已發表: 2020-08-18

誰不想擁有一個有組織的 WordPress 網站? 這正是自定義帖子類型很重要的原因。 CTP 允許我們分離數據並在必要時輕鬆訪問和更新。 然而,使我們能夠組織這些內容並賦予它層次結構的是自定義帖子類型中的父子關係。 但是,在我們談論親子關係之前,讓我們從頭開始。

期待已久的CPT

如果您不知道為什麼更新 WordPress 很重要,這裡有一個明顯的例子。 經過多年的等待,當 WordPress 3.0 到來時,我們終於能夠創建自定義帖子類型。 這確實是您想盡快了解的機會。 有了它,WordPress 網站從一個簡單的博客平台轉變為一個強大的控制管理系統。 只需幾行代碼,我們就可以擁有自己的類型。

在我們了解自定義帖子類型中的父子關係之前,讓我們首先了解一下自定義帖子類型是什麼。

什麼是 CPT?

自定義帖子類型的 CPT 可視為內容。 “帖子”一詞可能會讓您感到困惑,因為它無論如何都不是博客帖子。 CPT 可以是您想要的任何內容,並且沒有嚴格的規則來定義它們。 顯然,有默認和自定義帖子類型。 默認帖子類型是博客帖子、頁面和附件、修訂和導航菜單。

另一方面,自定義帖子類型允許對創建、存儲和編輯信息進行更多的創造性控制。

您不應該將自定義帖子類型與博客帖子混合使用。 如果您想為博客文章創建結構和層次結構,您可以使用 WordPress 中的類別和子類別。

用於自定義帖子類型

雖然有 WordPress 默認的帖子類型,但有些人需要的不止這些。 以下是自定義帖子類型有用的一些示例:

  • 活動列表網站,包含活動類型和地點
  • 房地產清單
  • 具有產品選項的電子商務網站
  • 票務系統
  • 設計畫廊或展示櫃

請記住,這些想法只是其中的一些建議。 還有更多可以使用自定義帖子類型的想法,所以請盡情發揮您的想像力。

親子關係及職位

當您轉到設置並啟用“分層”選項時,您可以讓您的帖子表現得更像頁面,並且您將能夠獲得父/子關係。 例如,假設您有一個名為“drink”的帖子類型和一個名為“liquor”的父頁面,以及一個名為“vodka”的子頁面。 當您查看“vodka”帖子時,URL 看起來像這樣:yoursite.com/drink/liquor/vodka/

基本上,這只會影響您的帖子類型中的帖子,而不影響彼此相關的其他帖子類型。 例如,“飲料”的帖子類型不會是“食物”的帖子類型的孩子。

限制選項

說到帖子關係,WordPress 提供的很少。 實際上,自定義類型帖子中的父/子關係是 WordPress 唯一支持的關係。 但是,將自定義帖子類型設為父級並將另一個自定義帖子類型設為子級似乎具有挑戰性。

WordPress。
WordPress 在自定義帖子類型中只允許父子關係

這是一個項目的示例,您可以在其中查看不同的帖子類型並將子帖子分配給父帖子。

  • 名為“鄰居”的自定義帖子類型
  • 對於這個社區內的地方,我們將有一個名為“地方”的自定義帖子類型
  • 請記住,這些自定義帖子類型是非分層的
  • 目標是將每個地方分配給一個社區,由父級發布

分配父帖子

希望到現在為止,您對帖子類型有所了解並知道它們是如何工作的。 但是,為了分配父帖子,您需要進行一些編碼。 如果您不熟悉 WordPress 中的簡碼,請嘗試了解基礎知識。 基礎知識應該足夠了,因為您只需將以下代碼添加到插件的管理文件中即可分配父帖子。

筆記本電腦上的代碼,在自定義帖子類型中建立父子關係所必需的
編碼時間

為了便於解釋,這裡我們將使用平面柱型 Neighborhood 和 Place。 現在,是時候編寫代碼了:

 /* Hook meta box to just the 'place' post type. */ add_action( 'add_meta_boxes_place', 'my_add_meta_boxes' ); /* Creates the meta box. */ function my_add_meta_boxes( $post ) { add_meta_box( 'my-place-parent', __( 'Neighborhood', 'example-textdomain' ), 'my_place_parent_meta_box', $post->post_type, 'side', 'core' ); } /* Displays the meta box. */ function my_place_parent_meta_box( $post ) { $parents = get_posts( array( 'post_type' => 'neighborhood', 'orderby' => 'title', 'order' => 'ASC', 'numberposts' => -1 ) ); if ( !empty( $parents ) ) { echo '<select name="parent_id" class="widefat">'; // !Important! Don't change the 'parent_id' name attribute. foreach ( $parents as $parent ) { printf( '<option value="%s"%s>%s</option>', esc_attr( $parent->ID ), selected( $parent->ID, $post->post_parent, false ), esc_html( $parent->post_title ) ); } echo '</select>'; } }

不要忘記將帖子類型名稱更改為您自己的帖子類型。 為了更好地理解代碼並在您的網站上使用它,這裡是 GitHub 上的另一個示例,您可能會發現它很有用。

發布關係

雖然自定義帖子類型中的父子關係很有用,但它們也非常有限。 如果您想獲得更複雜的解決方案,您將不得不尋找其他地方。 它們是一些插件,可以幫助您實現類似的帖子關係效果。

有孩子和平板電腦的母親。
為了給你更好的畫面

為什麼我們需要發布關係?

如果我們想在網站上的帖子之間建立聯繫,我們基本上是在使用帖子關係。 它們之所以如此出色,是因為它們允許我們創建高級網站。 一旦我們將自定義帖子類型的帖子相互連接起來,我們就可以避免數據重複,並且我們確保所有人都不需要多次編輯一條信息。 此外,由於時間就是金錢,我們需要任何可以幫助我們避免平凡任務的方法。

在自定義帖子類型中使用父子關係的好處

在自定義帖子類型中使用父子關係的明顯好處之一是您可以保持網站排序。 搜索引擎和用戶都喜歡結構有條理的網站。 但是,請記住,為了真正體驗到其中的好處,您需要製定一個好的計劃並堅持下去。