Php WordPress-如何将自定义元框添加到特定的管理页面?

Php WordPress-如何将自定义元框添加到特定的管理页面?,php,wordpress,meta-boxes,Php,Wordpress,Meta Boxes,如何将自定义元框仅添加到管理页面上的特定页面 这是我的自定义元框代码,我从中获得它: /** *将元框添加到后期编辑屏幕 */ 函数prfx_custom_meta(){ 添加元框('prfx_-meta','prfx_('meta-box Title','prfx textdomain'),'prfx_-meta_-callback',数组('post','page'); } 添加动作('add_meta_box'、'prfx_custom_meta'); /** *输出元框的内容 */ 函数

如何将自定义元框仅添加到管理页面上的特定页面

这是我的自定义元框代码,我从中获得它:

/**
*将元框添加到后期编辑屏幕
*/
函数prfx_custom_meta(){
添加元框('prfx_-meta','prfx_('meta-box Title','prfx textdomain'),'prfx_-meta_-callback',数组('post','page');
}
添加动作('add_meta_box'、'prfx_custom_meta');
/**
*输出元框的内容
*/
函数prfx_meta_回调($post){
//echo“这是一个元盒”;
wp_nonce_字段(basename(_FILE__;),'prfx_nonce');
$prfx\u stored\u meta=get\u post\u meta($post->ID);
如果($post_slug=='home'){
?>

/**
*将元框添加到后期编辑屏幕
*/
函数prfx_custom_meta(){
$current_user=wp_get_current_user();
if($current_user->roles[0]=='administrator'){
添加元框('prfx_-meta','prfx_('meta-box Title','prfx textdomain'),'prfx_-meta_-callback',数组('post','page');
}
}
添加动作('add_meta_box'、'prfx_custom_meta');
/**
*输出元框的内容
*/
函数prfx_meta_回调($post){
//echo“这是一个元盒”;
wp_nonce_字段(basename(_FILE__;),'prfx_nonce');
$prfx\u stored\u meta=get\u post\u meta($post->ID);
如果($post_slug=='home'){
?>


你可以试试这个条件

add_action('admin_init','my_meta_init');
function my_meta_init()
{
   $post_id = $_GET['post'] ? $_GET['post'] : $_POST['post_ID'] ;
   // checks for post/page ID
   if ($post_id == '84')
   {
   add_meta_box('my_all_meta_1', 'My Custom Meta Box 1', 'my_meta_setup_1',   'page', 'normal', 'high');
   }
add_action('save_post','my_meta_save');
}

使用此js将解决您的问题。这将在特定的模板或页面上显示metabox

  (function($){
    $(document).ready(function() {

        var $page_template = $('#pageid')
            ,$metabox1 = $('#metaboxid');

        $page_template.change(function() {
            if ($(this).val() == 'templatename') {
                $metabox1.show();

            } else {
                $metabox1.hide();

            }
        }).change();

    });
    })(jQuery);

如果你在admin中使用这个函数,那么使用admin hook并在functions中添加这个代码。php

你可以通过
$\u GET['post']?$\u GET['post']:$\u post['post\u ID']
来检查你想在哪个页面中添加meta框。但是我如何获得post slug而不是post ID呢?试试这个,$post=GET\u post($post\u ID);$slug=$post->post_name;@teelou它是不一样的。
/**
 * Adds a meta box to the post editing screen
 */
function prfx_custom_meta() {
    $current_user = wp_get_current_user();
    if($current_user->roles[0] === 'administrator') {
        add_meta_box( 'prfx_meta', __( 'Meta Box Title', 'prfx-textdomain' ), 'prfx_meta_callback', array( 'post', 'page') );
    }
}

add_action( 'add_meta_boxes', 'prfx_custom_meta' );


/**
 * Outputs the content of the meta box
 */
function prfx_meta_callback( $post ) {
    // echo 'This is a meta box';
    wp_nonce_field( basename( __FILE__ ), 'prfx_nonce' );
    $prfx_stored_meta = get_post_meta( $post->ID );

    if ($post_slug == 'home') {
    ?>

    <p>
        <label for="meta-text" class="prfx-row-title"><?php _e( 'Example Text Input', 'prfx-textdomain' )?></label>
        <input type="text" name="meta-text" id="meta-text" value="<?php if ( isset ( $prfx_stored_meta['meta-text'] ) ) echo $prfx_stored_meta['meta-text'][0]; ?>" />
    </p>

    <?php
    }
}

/**
 * Saves the custom meta input
 */
function prfx_meta_save( $post_id ) {

    // Checks save status
    $is_autosave = wp_is_post_autosave( $post_id );
    $is_revision = wp_is_post_revision( $post_id );
    $is_valid_nonce = ( isset( $_POST[ 'prfx_nonce' ] ) && wp_verify_nonce( $_POST[ 'prfx_nonce' ], basename( __FILE__ ) ) ) ? 'true' : 'false';

    // Exits script depending on save status
    if ( $is_autosave || $is_revision || !$is_valid_nonce ) {
        return;
    }

    // Checks for input and sanitizes/saves if needed
    if( isset( $_POST[ 'meta-text' ] ) ) {
        update_post_meta( $post_id, 'meta-text', sanitize_text_field( $_POST[ 'meta-text' ] ) );
    }

}
add_action( 'save_post', 'prfx_meta_save' );
add_action('admin_init','my_meta_init');
function my_meta_init()
{
   $post_id = $_GET['post'] ? $_GET['post'] : $_POST['post_ID'] ;
   // checks for post/page ID
   if ($post_id == '84')
   {
   add_meta_box('my_all_meta_1', 'My Custom Meta Box 1', 'my_meta_setup_1',   'page', 'normal', 'high');
   }
add_action('save_post','my_meta_save');
}
  (function($){
    $(document).ready(function() {

        var $page_template = $('#pageid')
            ,$metabox1 = $('#metaboxid');

        $page_template.change(function() {
            if ($(this).val() == 'templatename') {
                $metabox1.show();

            } else {
                $metabox1.hide();

            }
        }).change();

    });
    })(jQuery);