如何从插件修改WordPress中的“新帖子”表单


How do I modify the New Post form in WordPress from a plugin?

我将解释我正在创建的内容,以便您轻松理解我的问题。 我正在制作一个插件,可让您将餐厅菜单添加到您的网站。 我目前有自定义的管理仪表板菜单链接,如果您想将菜肴添加到餐厅菜单中,可以将您带到新的帖子页面。 我想修改"新帖子"页面,以便有一个价格字段和一个缩略图上传器,并将页面标题从"添加新页面"更改为"添加新菜肴"。 我创建了一个自定义帖子类型"dish",我只希望在帖子类型为 dish 时发生这些更改。 当帖子类型为 dish 时,如何向"添加新页面"表单添加更改? 这是我到目前为止的插件代码...(附言)这是我的第一个插件!

<?php
/* 
Plugin Name: HeadChef
Plugin URI: http://google.com
Description:  Adds functionality for the restaurant's menu
Author: John Smith
Version: Alpha
Author URI: http://google.com
*/
add_action('admin_menu', 'hc_add_menu_items');
function hc_add_menu_items() {
  // $page_title, $menu_title, $capability, $menu_slug, $callback_function
  add_posts_page(__('Restaurant Menu'), __('My Menus'), 'read', 'edit.php?post_type=dish');
}
add_action( 'init', 'hc_create_post_type' );
function hc_create_post_type(){
    register_post_type( 'dish',
        array(
          'labels' => array(
            'name' => __( 'Menu Dish' ),
            'singular_name' => __( 'Dish' )
          ),
          'public' => true,
          'has_archive' => true,
        )
      );
}

要更改 UI 中的标签,请参阅 register_post_type() 的参数,一些示例:

$labels = array(
    'name'               => _x( 'Menu dish' ),
    'singular_name'      => _x( 'Dish' ),
    'add_new_item'       => __( 'Add new dish' ),
    'new_item'           => __( 'New dish' ),
    // ...
);

您可以使用add_meta_box()将内容添加到编辑页面:

function myplugin_add_meta_box() {
    // add here which for post types you want this box
    $screens = array( 'dish' );
    add_meta_box(
        'myplugin_sectionid',
        __( 'My Post Section Title', 'myplugin_textdomain' ),
        'myplugin_meta_box_callback',
        $screens
    );
}
add_action( 'add_meta_boxes', 'myplugin_add_meta_box' );