我想知道如何在WordPress特定的页面管理中添加meta\\u框,我的意思是,当我用下面源代码教程提供的代码片段创建meta\\u框时,它确实是完美和有效的,但我需要控制的一件事是,只在特定的页面中显示meta\\u框,例如:假设我在WordPress项目中有两个名为Home和About的页面。
默认情况下,当我创建meta_框时,我添加的meta_框将显示在同一个页面管理后端,当我单击“主页”和“关于页面”的编辑按钮时,我的meta框将显示在这两个页面中。我想要的是,当我单击编辑页面时,使meta\\u框仅显示在“主页”管理后端页面中。
我的目标是在每个不同的页面上设置不同的meta\\u框,这意味着用户特别是博客编辑,当他们在每个页面上单击编辑按钮时,希望在不同的页面上设置不同的meta\\u框,这是我无法解决的问题,你能帮我解决这个问题吗
/*
Plugin Name: Meta Box Example
Description: Example demonstrating how to add Meta Boxes.
Plugin URI: https://plugin-planet.com/
Author: Jeff Starr
Version: 1.0
*/
// register meta box
function myplugin_add_meta_box() {
$post_types = array( \'post\', \'page\' );
foreach ( $post_types as $post_type ) {
add_meta_box(
\'myplugin_meta_box\', // Unique ID of meta box
\'MyPlugin Meta Box\', // Title of meta box
\'myplugin_display_meta_box\', // Callback function
$post_type // Post type
);
}
}
add_action( \'add_meta_boxes\', \'myplugin_add_meta_box\' );
// display meta box
function myplugin_display_meta_box( $post ) {
$value = get_post_meta( $post->ID, \'_myplugin_meta_key\', true );
wp_nonce_field( basename( __FILE__ ), \'myplugin_meta_box_nonce\' );
?>
<label for="myplugin-meta-box">Field Description</label>
<select id="myplugin-meta-box" name="myplugin-meta-box">
<option value="">Select option...</option>
<option value="option-1" <?php selected( $value, \'option-1\' ); ?>>Option 1</option>
<option value="option-2" <?php selected( $value, \'option-2\' ); ?>>Option 2</option>
<option value="option-3" <?php selected( $value, \'option-3\' ); ?>>Option 3</option>
</select>
<?php
}
// save meta box
function myplugin_save_meta_box( $post_id ) {
$is_autosave = wp_is_post_autosave( $post_id );
$is_revision = wp_is_post_revision( $post_id );
$is_valid_nonce = false;
if ( isset( $_POST[ \'myplugin_meta_box_nonce\' ] ) ) {
if ( wp_verify_nonce( $_POST[ \'myplugin_meta_box_nonce\' ], basename( __FILE__ ) ) ) {
$is_valid_nonce = true;
}
}
if ( $is_autosave || $is_revision || !$is_valid_nonce ) return;
if ( array_key_exists( \'myplugin-meta-box\', $_POST ) ) {
update_post_meta(
$post_id, // Post ID
\'_myplugin_meta_key\', // Meta key
sanitize_text_field( $_POST[ \'myplugin-meta-box\' ] ) // Meta value
);
}
}
add_action( \'save_post\', \'myplugin_save_meta_box\' );
是否有任何条件或功能可供您推荐?
最合适的回答,由SO网友:vishwa 整理而成
/* Add meta boxs for particular pages */
function meta_set_particular_page() {
$post_id = $_GET[\'post\'] ? $_GET[\'post\'] : $_POST[\'post_ID\'];
$current_page_title = get_the_title($post_id);
if ($current_page_title == \'home\') {
add_meta_box(\'Home_page\', \'Home Name:\', \'only_home\', \'page\', \'side\', \'core\');
}
if($current_page_title == \'about\'){
add_meta_box(\'About_page\', \'About Name:\', \'only_about\', \'page\', \'side\', \'core\');
}
}
add_action(\'add_meta_boxes\', \'meta_set_particular_page\');
/* Add custom meta box for home page */
function only_home($post) {
$home_page = esc_html(get_post_meta($post->ID, \'home_page\', true));
?>
<table style="width:100%;">
<tr>
<td style="width: 20%">Name</td>
<td style="width: 40%">
<input type="text" size="70" name="home_page" placeholder="Home Name" value="<?php echo $home_page; ?>">
</td>
</tr>
</table>
<?php
}
/*Add custom meta box for about page*/
function only_about($post) {
$about_page = esc_html(get_post_meta($post->ID, \'about_page\', true));
?>
<table style="width:100%;">
<tr>
<td style="width: 20%">Name</td>
<td style="width: 40%">
<input type="text" size="50" name="about_page" placeholder="About Name" value="<?php echo $about_page; ?>">
</td>
</tr>
</table>
<?php
}
/*Save custom post meta values*/
function custom_metabox_fields($custom_metabox_id) {
if (isset($_POST[\'home_page\'])) {
update_post_meta($custom_metabox_id, \'home_page\', $_POST[\'home_page\']);
}
if (isset($_POST[\'about_page\'])) {
update_post_meta($custom_metabox_id, \'about_page\', $_POST[\'about_page\']);
}
}
add_action(\'save_post\', \'custom_metabox_fields\', 10, 2);