wordpress添加文章固定欄位的介紹

來源:互聯網
上載者:User
這篇文章主要介紹了關於wordpress添加文章固定欄位的介紹,有著一定的參考價值,現在分享給大家,有需要的朋友可以參考一下

讓wordpress的文章資料表 增加一個欄位,使其能在文章編輯頁能編輯,並能通過rest api 擷取出來。

例:給文章加一個縮圖欄位 litpic

首先 通過mysql 給文章表 wp_posts 加一個欄位 litpic

然後在主題的function.php 後面添加如下代碼:

add_action( 'add_meta_boxes', 'myplugin_add_custom_box'); add_action( 'save_post', 'myplugin_save_postdata');function myplugin_add_custom_box() {add_meta_box('myplugin_sectionid','設定縮圖', // 可自行修改標題文字'myplugin_inner_custom_box','post');}function myplugin_inner_custom_box( $post ) {global $wpdb;// Use nonce for verificationwp_nonce_field( plugin_basename( __FILE__ ), 'myplugin_noncename' );// 擷取固定欄位litpic的值,用於顯示之前儲存的值// 此處wp_posts新添加的欄位為litpic,多個用半形逗號隔開$date = $wpdb->get_row( $wpdb->prepare( "SELECT litpic FROM $wpdb->posts WHERE ID = %d", $post->ID) );// litpic  欄位輸入框的HTML代碼echo '<label for="litpic_new_field">圖片url </label>';echo '<input type="text" id="litpic_new_field" name="litpic_new_field" value="'.$date->litpic.'" size="28" />';// 多個欄位依此類推}function myplugin_save_postdata( $post_id ) {// verify if this is an auto save routine.// If it is our form has not been submitted, so we dont want to do anythingif ( defined( ’DOING_AUTOSAVE’ ) && DOING_AUTOSAVE )return;// verify this came from the our screen and with proper authorization,// because save_post can be triggered at other timesif ( !wp_verify_nonce( $_POST['myplugin_noncename'], plugin_basename( __FILE__ ) ) )return;// 許可權驗證if ( 'post' == $_POST['post_type'] ) {if ( !current_user_can( 'edit_post', $post_id ) )return;}// 擷取編寫文章時填寫的固定欄位的值,多個欄位依此類推$litpic = $_POST['litpic_new_field'];global $wpdb;$wpdb->update( "$wpdb->posts",// 以下一行代碼,多個欄位的話參照下面的寫法,單引號中是欄位名,右邊是變數值。半形逗號隔開array( 'litpic' => $litpic),array( 'ID' => $post_id ),// 添加了多少個新欄位就寫多少個%s,半形逗號隔開array( '%s'),array( '%d'));}

添加後,文章頁會顯示litpic欄位的輸入框,

但此時 rest api還不會把litpic欄位輸出。

開啟 /wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php 檔案。

添加如下代碼:

if ( ! empty( $schema['properties']['litpic'] ) ) {            $data['litpic'] = $post->litpic;        }

'litpic'        => array(                    'description' => __( 'A litpic to protect access to the content and excerpt.' ),                    'type'        => 'string',                    'context'     => array( 'view', 'edit', 'embed' ),                ),

$post_type_attributes = array(            'title',            'editor',            'author',            'excerpt',            'thumbnail',            'comments',            'revisions',            'page-attributes',            'post-formats',            'custom-fields',            'litpic',        );        $fixed_schemas = array(            'post' => array(                'title',                'editor',                'author',                'excerpt',                'thumbnail',                'comments',                'revisions',                'post-formats',                'custom-fields',                'litpic',            ),

case 'litpic':                    $schema['properties']['litpic'] = array(                        'description' => __( 'The ID for the litpic of the object.' ),                        'type'        => 'string',                        'context'     => array( 'view', 'edit', 'embed' ),                    );                    break;

現在,rest api 就可以把litpic 欄位輸出了。

以上就是本文的全部內容,希望對大家的學習有所協助,更多相關內容請關注topic.alibabacloud.com!

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.