国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

目錄
WordPress中設(shè)置Post Type自定義文章類型的實(shí)例教程,wordpress實(shí)例教程
首頁 後端開發(fā) php教程 WordPress中設(shè)置Post Type自定義文章類型的實(shí)例教程,wordpress實(shí)例教程_PHP教程

WordPress中設(shè)置Post Type自定義文章類型的實(shí)例教程,wordpress實(shí)例教程_PHP教程

Jul 12, 2016 am 08:52 AM
wordpress 文章類型

WordPress中設(shè)置Post Type自定義文章類型的實(shí)例教程,wordpress實(shí)例教程

什么是自定義post?
不要想當(dāng)然的認(rèn)為這里的post就是就是指博客中的文章,它只不過是一個文章類的代理詞而已,甚至你還可以認(rèn)為它是內(nèi)容。
自定義模型是沒有一個很標(biāo)準(zhǔn)的什么規(guī)定的,文章模型可以是你想的任何一個內(nèi)容模型,就拿wordpress本身來說就內(nèi)置了以下幾個內(nèi)容文章模型:

  • 博客文章
  • 頁面
  • 附件
  • 修正
  • 導(dǎo)航等

你可以這樣去理解:它只要是想我們使用博客文章那樣用來創(chuàng)建、編輯和儲存數(shù)據(jù)的一種很靈活的內(nèi)容形式。

不過在這里我還是需要提醒下,博客內(nèi)置的post還是有點(diǎn)點(diǎn)不同的,你可以利用它含有分類、標(biāo)簽等去標(biāo)識內(nèi)容的!
為什么要自定義文章模型?
Wordpress已經(jīng)提供一些完善的默認(rèn)文章模型,并適用于大多數(shù)站點(diǎn),但我們還是需要更多的選擇。我列舉了一些我想到的一些可能有用內(nèi)容模型,并鏈接到相對應(yīng)的例子。

  • 房產(chǎn)清單
  • 活動日歷(我知道很多人對這個感興趣)
  • 影視資料庫
  • 書籍資料庫
  • 沒有很多集成問題的論壇系統(tǒng)
  • 類似WordPress Trac的票務(wù)系統(tǒng)
  • 設(shè)計相冊或作品集

你還可以想到我列舉之外的更多內(nèi)容模型。而且我也想在以后學(xué)習(xí)更多關(guān)于論壇和票務(wù)系統(tǒng)的想法。這兩個系統(tǒng)我已經(jīng)實(shí)現(xiàn)并希望的得到一些反饋。

創(chuàng)建一個 post type
創(chuàng)建一個新的 Post Type 需要使用 register_post_type 函數(shù)來注冊一下。需要在你主題的 functions.php 文件下調(diào)用該函數(shù):

register_post_type( $post_type, $args );

$post_type 參數(shù)就是你自定義 Post Type 的名稱,Post Type 可以自定義的功能非常多,所以這個函數(shù)里面的 $args 參數(shù)會很多。所以通常會用下面這種格式來注冊:

function my_custom_post_product() {
  $args = array();
  register_post_type( 'product', $args ); 
}
add_action( 'init', 'my_custom_post_product' );

包裹在一個函數(shù)中,定義一個數(shù)組,然后掛靠到 init 這個 action 上。這樣 WordPress 在初始化的時候,就會執(zhí)行這個函數(shù)注冊一個自定義 Post Type,因?yàn)檎{(diào)用 register_post_type() 的時候,必須要在 admin_menu action 之前,在 after_setup_theme action 之后,所以這里最好掛靠到 init action 上。
參數(shù)很多,為了寫教程方便,只列出比較常用的參數(shù),大體結(jié)構(gòu)如下:

function my_custom_post_movie() {
 $labels = array(
  'name'        => _x( 'Movies', 'post type 名稱' ),
  'singular_name'   => _x( 'Movie', 'post type 單個 item 時的名稱,因?yàn)橛⑽挠袕?fù)數(shù)' ),
  'add_new'      => _x( '新建電影', '添加新內(nèi)容的鏈接名稱' ),
  'add_new_item'    => __( '新建一個電影' ),
  'edit_item'     => __( '編輯電影' ),
  'new_item'      => __( '新電影' ),
  'all_items'     => __( '所有電影' ),
  'view_item'     => __( '查看電影' ),
  'search_items'    => __( '搜索電影' ),
  'not_found'     => __( '沒有找到有關(guān)電影' ),
  'not_found_in_trash' => __( '回收站里面沒有相關(guān)電影' ),
  'parent_item_colon' => '',
  'menu_name'     => 'Movies'
 );
 $args = array(
  'labels'    => $labels,
  'description'  => '我們網(wǎng)站的電影信息',
  'public'    => true,
  'menu_position' => 5,
  'supports'   => array( 'title', 'editor', 'thumbnail', 'excerpt', 'comments' ),
  'has_archive'  => true
 );
 register_post_type( 'movie', $args );
}
add_action( 'init', 'my_custom_post_movie' );

這里為了直觀方便,我直接使用了中文,更好的應(yīng)該是使用英文然后通過本地化函數(shù)來翻譯成中文。
參數(shù)有點(diǎn)多,也可以使用 generatewp 工具自定義參數(shù),然后改改,會稍微方便一點(diǎn)。
從上面代碼可以看到 $args 數(shù)組里面有一個 labels 配置項(xiàng),用來配置顯示文案有關(guān)的內(nèi)容,為了清晰所以單獨(dú)拿出來創(chuàng)建了一個數(shù)組。其他配置項(xiàng)看下英文也能猜出大體意思,如果想要詳細(xì)了解,可以看下官方文檔:register_post_type 。
將上面代碼加到主題 functions.php 的最下面,進(jìn)入后臺你會發(fā)現(xiàn)多出了 Movies 選項(xiàng),這樣表示注冊成功:

2016510155202407.jpg (978×716)

這時候我們可以新建 Movie 發(fā)表一篇電影類型的文章了。但是這樣與文章類型基本相同,我們需要更多的自定義來完善我們的 Movie 類型。
為 Post Type 添加分類功能
就電影來說,可以分為科幻、動作、戰(zhàn)爭等類別,那么我們就為自定義的 Movie 添加分類功能,這樣就可以編輯新分類以及歸類我們的電影了。這個分類跟文章里面的分類性質(zhì)是一樣的。
添加分類功能需要使用函數(shù) register_taxonomy,使用方法也很簡單,跟注冊 Post Type 函數(shù)類似,只不過多了一個參數(shù)用來指定對應(yīng)的 Post Type :

register_taxonomy( $taxonomy, $object_type, $args );

就本例而言,可以配置如下常用參數(shù):

function my_taxonomies_movie() {
 $labels = array(
  'name'       => _x( '電影分類', 'taxonomy 名稱' ),
  'singular_name'   => _x( '電影分類', 'taxonomy 單數(shù)名稱' ),
  'search_items'   => __( '搜索電影分類' ),
  'all_items'     => __( '所有電影分類' ),
  'parent_item'    => __( '該電影分類的上級分類' ),
  'parent_item_colon' => __( '該電影分類的上級分類:' ),
  'edit_item'     => __( '編輯電影分類' ),
  'update_item'    => __( '更新電影分類' ),
  'add_new_item'   => __( '添加新的電影分類' ),
  'new_item_name'   => __( '新電影分類' ),
  'menu_name'     => __( '電影分類' ),
 );
 $args = array(
  'labels' => $labels,
  'hierarchical' => true,
 );
 register_taxonomy( 'movie_category', 'movie', $args );
}
add_action( 'init', 'my_taxonomies_movie', 0 );

添加到主題之后,我們看到出現(xiàn)了熟悉的文章分類功能,只不過上面的文案全部變成我們自定義的內(nèi)容了:

2016510155316892.jpg (2558×1406)

這里我們添加兩個分類作為演示。
為 Post Type 添加自定義 Meta Box
我們想要添加的電影類型不能僅僅只有正文內(nèi)容,我們還需要額外添加一些 導(dǎo)演 之類的有關(guān)內(nèi)容。那么就需要添加自定義 Meta Box,Meta Box 可以在文章發(fā)表頁面中添加自定義的表單,編寫文章的時候可以填寫額外的信息然后在前端調(diào)用出來。
自定義 Meta Box 需要用到 add_meta_box 函數(shù):

add_meta_box( $id, $title, $callback, $post_type, $context,$priority, $callback_args );

老規(guī)矩,具體參數(shù)內(nèi)容查看官方文檔,這里只介紹常用用法。我們注冊一個 Meta Box :

add_action( 'add_meta_boxes', 'movie_director' );
function movie_director() {
  add_meta_box(
    'movie_director',
    '電影導(dǎo)演',
    'movie_director_meta_box',
    'movie',
    'side',
    'low'
  );
}

然后在配置參數(shù)里面指定了回調(diào)函數(shù) movie_director_meta_box,我們需要在這個函數(shù)里面創(chuàng)建表單:

function movie_director_meta_box($post) {
  // 創(chuàng)建臨時隱藏表單,為了安全
  wp_nonce_field( 'movie_director_meta_box', 'movie_director_meta_box_nonce' );
  // 獲取之前存儲的值
  $value = get_post_meta( $post->ID, '_movie_director', true );
  ?>
  <label for="movie_director"></label>
  <input type="text" id="movie_director" name="movie_director" value="<&#63;php echo esc_attr( $value ); &#63;>" placeholder="輸入導(dǎo)演名稱" >
  <&#63;php
}

這樣就可以在文章界面邊欄顯示出來剛剛創(chuàng)建的表單了:

2016510155409367.png (638×694)

但是這時候,你的表單是沒法用的,因?yàn)槟闾峤晃恼轮蟛]有保存這個 Meta Box 的內(nèi)容,下面是驗(yàn)證保存內(nèi)容的代碼:

add_action( 'save_post', 'movie_director_save_meta_box' );
function movie_director_save_meta_box($post_id){
  // 安全檢查
  // 檢查是否發(fā)送了一次性隱藏表單內(nèi)容(判斷是否為第三者模擬提交)
  if ( ! isset( $_POST['movie_director_meta_box_nonce'] ) ) {
    return;
  }
  // 判斷隱藏表單的值與之前是否相同
  if ( ! wp_verify_nonce( $_POST['movie_director_meta_box_nonce'], 'movie_director_meta_box' ) ) {
    return;
  }
  // 判斷該用戶是否有權(quán)限
  if ( ! current_user_can( 'edit_post', $post_id ) ) {
    return;
  }
  // 判斷 Meta Box 是否為空
  if ( ! isset( $_POST['movie_director'] ) ) {
    return;
  }
  $movie_director = sanitize_text_field( $_POST['movie_director'] );
  update_post_meta( $post_id, '_movie_director', $movie_director );
}

雖然最關(guān)鍵的函數(shù)就在最后一句,但是一定要注意安全的校驗(yàn)。把這些代碼添加進(jìn) functions.php 文件之后,你的 Meta Box 就可以正常工作了。如果你需要更多表單,按照這個模式自定義表單結(jié)構(gòu),然后添加保存函數(shù)即可。
下面,我們迫不及待的添加兩部電影《魚與鍋之戰(zhàn):宿命對決》 和 《魚與鍋之戰(zhàn):我愛水煮魚》 內(nèi)容如下:

2016510155440232.jpg (2194×1196)

2016510155506733.jpg (2186×1258)

添加完之后,我們可以看下所有電影:

2016510155526928.jpg (2204×714)

列表空蕩蕩的,好難看,我可不可以加上導(dǎo)演字段?當(dāng)然可以,使用 [manage $post type posts custom column](http://codex.wordpress.org/Plugin_API/Action_Reference/manage_$post_type_posts_custom_column) 即可實(shí)現(xiàn),我們添加:

add_action("manage_posts_custom_column", "movie_custom_columns");
add_filter("manage_edit-movie_columns", "movie_edit_columns");
function movie_custom_columns($column){
  global $post;
  switch ($column) {
    case "movie_director":
      echo get_post_meta( $post->ID, '_movie_director', true );
      break;
  }
}
function movie_edit_columns($columns){
  $columns['movie_director'] = '導(dǎo)演';
  return $columns;
}

即添加了列導(dǎo)演字段,并從每篇文章中讀取出來。這樣我們的列表就變成了:

2016510155555944.png (1608×474)

OK,我們的后端部分就這樣愉快的完成了。打開生成好的鏈接看下,咦,Not Found?是這樣的,如果你的網(wǎng)站設(shè)置了固定連接,當(dāng)你新建了 Post Type 之后,你必須要在后臺更新一下固定連接設(shè)置才行。找到后臺固定連接,再點(diǎn)擊一下下面的“保存設(shè)置”,之后就可以正常訪問了。
展示 Post Type 的內(nèi)容
單純創(chuàng)建 Post Type 只是可以讓你輸入內(nèi)容,沒有什么意義,我們還需要在前臺輸出自定義 Post Type 的內(nèi)容。
自定義 Post Type 的模板和樣式
根據(jù) WordPress 的模板調(diào)用規(guī)則 我們可以得知,我們只需要創(chuàng)建 archive-[post_type].php 和 single-[post_type].php 就可以實(shí)現(xiàn)該 Post Type 的列表自定義和文章自定義。當(dāng)訪問 Post Type,WordPress 會優(yōu)先調(diào)用這些模板來渲染。
需要注意的是,你需要在注冊 Post Type 的時候設(shè)置 'has_archive' => true 才會有列表。
現(xiàn)在我們就把主題里自帶的 archive.php 和 single.php 文件復(fù)制一份命名為 archive-movie.php 和 single-movie.php,為了演示,這里我不做很多自定義,只是輸出導(dǎo)演信息表示一下。
我們分別在 L.56 和 L.23 附近的合適位置輸出 Meta Box 信息:

echo '導(dǎo)演:'.get_post_meta( get_the_ID(), '_movie_director', true );

然后刷新訪問電影列表和具體的電影就可以看到輸出的導(dǎo)演信息了。
這里只是舉個例子,實(shí)際中往往會自定義結(jié)構(gòu)和輸出的信息格式等,這里不再進(jìn)一步修改。這里不再麻煩演示了。
調(diào)用 WP_Query 高度自定義調(diào)用 Post Type 的內(nèi)容
上面操作依賴模板,如果需要高度自定義或者在頁面的某個模塊中調(diào)用列表,就需要用到 WP_Query 類來調(diào)用:

$args = array( 'post_type' => 'product', 'posts_per_page' => 10 );
$loop = new WP_Query( $args );
while ( $loop->have_posts() ) : $loop->the_post();
 the_title();
 echo '<div class="entry-content">';
 the_content();
 echo '</div>';
endwhile;

查詢出來之后就跟常規(guī)的主循環(huán)一樣了,自定輸出結(jié)構(gòu)即可。
在首頁列表中顯示自定義 Post Type 的內(nèi)容
雖然我們自定義好了 Post Type 同時也編寫了一些內(nèi)容,但是在首頁的列表里面并沒有顯示出來。自定義的 Post Type 的內(nèi)容不會自動混入主循環(huán)里面。那如何讓自定義 Post Type 的內(nèi)容顯示出來?
你需要使用 pre_get_posts 這個 action 來做一些處理:

add_action( 'pre_get_posts', 'add_my_post_types_to_query' );
function add_my_post_types_to_query( $query ) {
 if ( is_home() && $query->is_main_query() )
  $query->set( 'post_type', array( 'post', 'page', 'movie' ) );
 return $query;
}

在上面的 $query 變量里面設(shè)置的 post_type 數(shù)組就是要在主循環(huán)里面展示的內(nèi)容,將你的自定義 Post Type 填寫進(jìn)去就可以在首頁中顯示出來了。
設(shè)置自定義 Post Type 的固定連接
創(chuàng)建一個新的 Post Type 有時候也是為了更方便做 SEO,所以設(shè)置它的固定連接也非常重要。這里主要用到注冊 Post Type 的參數(shù)數(shù)組里面的 rewrite 參數(shù),常用以下幾兩項(xiàng):
slug =》自定義固定連接結(jié)構(gòu)別名,默認(rèn)是使用 Post Type 名(例如本例的 movie),可以被翻譯。一般來說 Post Type 名可能與實(shí)際需要的 URL 不一樣( Post Type 為 movie,但 URL 可能需要 movies),就可使用該項(xiàng)自定義。
with_front =》 固定連接是否以根目錄為基礎(chǔ)路徑。如果你在固定連接設(shè)置頁面設(shè)置你的結(jié)構(gòu)為 /archives/,那么你的 Post Type 生成的連接默認(rèn)為 /archives/movie 如果設(shè)置該項(xiàng)為 false 即可去掉前面的 /archives/ 直接基于根路徑生成固定連接。
大功告成,但這只是 Post Type 最基礎(chǔ)的用法,Post Type 還有其他更高級的用法,更詳細(xì)的參數(shù)配置還需要你去進(jìn)一步挖掘來適應(yīng)你網(wǎng)站的功能需求。

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/1125886.htmlTechArticleWordPress中設(shè)置Post Type自定義文章類型的實(shí)例教程,wordpress實(shí)例教程 什么是自定義post 不要想當(dāng)然的認(rèn)為這里的post就是就是指博客中的文章,...
本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願投稿,版權(quán)歸原作者所有。本站不承擔(dān)相應(yīng)的法律責(zé)任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請聯(lián)絡(luò)admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強(qiáng)大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

wordpress文章列表怎麼調(diào) wordpress文章列表怎麼調(diào) Apr 20, 2025 am 10:48 AM

有四種方法可以調(diào)整 WordPress 文章列表:使用主題選項(xiàng)、使用插件(如 Post Types Order、WP Post List、Boxy Stuff)、使用代碼(在 functions.php 文件中添加設(shè)置)或直接修改 WordPress 數(shù)據(jù)庫。

為Web開發(fā)者準(zhǔn)備的10個最新工具 為Web開發(fā)者準(zhǔn)備的10個最新工具 May 07, 2025 pm 04:48 PM

Web開發(fā)設(shè)計是一個充滿潛力的職業(yè)領(lǐng)域。然而,這個行業(yè)也面臨著諸多挑戰(zhàn)。隨著越來越多的企業(yè)和品牌轉(zhuǎn)向網(wǎng)絡(luò)市場,Web開發(fā)者有機(jī)會展示他們的技能並在職業(yè)生涯中取得成功。然而,隨著對Web開發(fā)需求的持續(xù)增長,開發(fā)人員的數(shù)量也在增加,導(dǎo)致競爭日益激烈。但令人振奮的是,如果你具備天賦和意願,你總能找到新方法來創(chuàng)造獨(dú)特的設(shè)計和創(chuàng)意。作為一名Web開發(fā)人員,你可能需要不斷尋找新的工具和資源。這些新工具和資源不僅能讓你的工作更加便捷,還能提升工作質(zhì)量,從而幫助你贏得更多的業(yè)務(wù)和客戶。 Web開發(fā)的趨勢不斷變化,

wordpress怎麼導(dǎo)入源碼 wordpress怎麼導(dǎo)入源碼 Apr 20, 2025 am 11:24 AM

導(dǎo)入 WordPress 源碼需要以下步驟:創(chuàng)建子主題以進(jìn)行主題修改。導(dǎo)入源碼,覆蓋子主題中的文件。激活子主題,使其生效。測試更改,確保一切正常。

wordpress主機(jī)怎麼建站 wordpress主機(jī)怎麼建站 Apr 20, 2025 am 11:12 AM

要使用 WordPress 主機(jī)建站,需要:選擇一個可靠的主機(jī)提供商。購買一個域名。設(shè)置 WordPress 主機(jī)帳戶。選擇一個主題。添加頁面和文章。安裝插件。自定義您的網(wǎng)站。發(fā)布您的網(wǎng)站。

如何在 Yandex 網(wǎng)站管理員工具中添加您的 WordPress 網(wǎng)站 如何在 Yandex 網(wǎng)站管理員工具中添加您的 WordPress 網(wǎng)站 May 12, 2025 pm 09:06 PM

您想將您的網(wǎng)站連接到Y(jié)andex網(wǎng)站管理員工具嗎? Google搜索控制臺、Bing和Yandex等網(wǎng)站管理員工具可幫助您優(yōu)化網(wǎng)站、監(jiān)控流量、管理robots.txt、檢查網(wǎng)站錯誤等。在本文中,我們將分享如何在Yandex網(wǎng)站管理員工具中添加您的WordPress網(wǎng)站來監(jiān)控您的搜索引擎流量。什麼是Yandex? Yandex是一個位於俄羅斯的流行搜索引擎,類似於Google和Bing。您可以在Yandex中優(yōu)

如何設(shè)置、獲取和刪除 WordPress Cookie(像專業(yè)人士一樣) 如何設(shè)置、獲取和刪除 WordPress Cookie(像專業(yè)人士一樣) May 12, 2025 pm 08:57 PM

您想了解如何在WordPress網(wǎng)站上使用cookie嗎? Cookie是在用戶瀏覽器中存儲臨時信息的有用工具。您可以使用此信息通過個性化和行為定位來增強(qiáng)用戶體驗(yàn)。在本終極指南中,我們將向您展示如何像專業(yè)人士一樣設(shè)置、獲取和刪除WordPresscookie。注意:這是一個高級教程。它要求您精通HTML、CSS、WordPress網(wǎng)站和PHP。什麼是Cookie? Cookie是用戶訪問網(wǎng)站時創(chuàng)建並存儲在用戶瀏覽

如何修復(fù) WordPress 中的 HTTP 圖片上傳錯誤(簡單) 如何修復(fù) WordPress 中的 HTTP 圖片上傳錯誤(簡單) May 12, 2025 pm 09:03 PM

您需要修復(fù)WordPress中的HTTP圖片上傳錯誤嗎?當(dāng)您在WordPress中創(chuàng)建內(nèi)容時,此錯誤可能會特別令人沮喪。當(dāng)您使用內(nèi)置WordPress媒體庫將圖像或其他文件上傳到CMS時,通常會發(fā)生這種情況。在本文中,我們將向您展示如何輕鬆修復(fù)WordPress中的HTTP圖片上傳錯誤。 WordPress媒體上傳過程中出現(xiàn)HTTP錯誤的原因是什麼?當(dāng)您嘗試使用WordPress媒體上傳器將文件上傳到Wo

wordpress賬號怎麼註冊 wordpress賬號怎麼註冊 Apr 20, 2025 am 11:45 AM

要在 WordPress 上創(chuàng)建賬號,只需訪問其網(wǎng)站,選擇註冊選項(xiàng),填寫註冊表,並驗(yàn)證您的電子郵件地址。其他註冊方法包括使用 Google 賬號或 Apple ID。註冊的好處包括創(chuàng)建網(wǎng)站、獲得功能、加入社區(qū)和獲得支持。

See all articles