Wordpress将“add_action”内容添加到管理部分中的“postbox-container-1”

时间:2014-01-02 21:29:53

标签: php html wordpress

我希望能够添加一个新的小部件'到管理部分的侧边栏,特别是在"新页面"和"编辑页面"页面。

我正在阅读Wordpress API文档,但我似乎无法在第一个" postbox-container-1"中找到添加新部分的位置。部分。

如果你进入wordpress管理部分,然后点击添加页面,我想在"发布/页面属性/特色图像"下添加一个新的小部件。小部件。

我最接近的是:add_action('dbx_post_sidebar', 'pluginFunctionHere');。不幸的是,这会在主页WYSIWYG编辑器下添加我的所有内容。

我知道如何定期添加它,但我想将它作为一般用途的插件。有任何想法吗?或者这部分是否有特定的钩子?

2 个答案:

答案 0 :(得分:3)

我尝试了上面的例子,但它没有用。然后我搜索了它缺少的东西并找到了它。我稍稍调整了original

/**
 * Register meta box(es).
 */
function wpdocs_register_meta_boxes() {
    add_meta_box( 'meta-box-id', __( 'Metabox Title', 'textdomain' ), 'wpdocs_my_display_callback', 'post', 'side', 'high');
}
add_action( 'add_meta_boxes', 'wpdocs_register_meta_boxes' );

/**
 * Meta box display callback.
 *
 * @param WP_Post $post Current post object.
 */
function wpdocs_my_display_callback( $post ) {
    // Display code/markup goes here. Don't forget to include nonces!
    ?> <h1>Test</h1><?php
}

/**
 * Save meta box content.
 *
 * @param int $post_id Post ID
 */
function wpdocs_save_meta_box( $post_id ) {
    // Save logic goes here. Don't forget to include nonce checks!
}
add_action( 'save_post', 'wpdocs_save_meta_box' );

答案 1 :(得分:1)

首先,您需要注册元框。你可以使用add_meta_boxes_page hook。

add_action( "add_meta_boxes_page", "se20892273_add_meta_boxes_page" );

// Register Your Meta box
function se20892273_add_meta_boxes_page( $post )
{
    add_meta_box( 
       'se20892273_custom_meta_box', // this is HTML id
       'Metabox Title', 
       'se20892273_custom_meta_box', // the callback function
       'page', // register on post type = page
       'side', // 
       'core'
    );
}

然后使用回调函数生成模板

function se20892273_custom_meta_box( $post )
{
    // you will get the $post object
    // do your stuff here
}

要保存元框上使用的任何输入值,请使用“save_post_page”hook。

add_action( "save_post_page", "se20892273_save_post_page" );
function se20892273_save_post_page( $post_ID )
{
    if ( defined('DOING_AUTOSAVE') && DOING_AUTOSAVE ) 
        return $post_ID ;

    if( isset( $_POST['input_name'] ))
    {
        update_post_meta( $post_ID, '_w4_template', $_POST['input_name'] );
    }
}