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);