你能做到吗?绝对地您只需查询_wp_page_template
的元键值$post
反对,并相应地采取行动。也许是这样的:
// Globalize $post
global $post;
// Get the page template post meta
$page_template = get_post_meta( $post->ID, \'_wp_page_template\', true );
// If the current page uses our specific
// template, then output our post meta
if ( \'template-foobar.php\' == $page_template ) {
// Put your specific custom post meta stuff here
}
现在,我建议使用
custom post meta box, 而不是自定义字段。
虽然完全实现自定义post meta框稍微超出了您的问题范围,但基本答案保持不变。不过,我会尽力为你指出大致的方向。您将使用add_meta_box()
, 在连接到的回调中调用add_meta_boxes-{hook}
, 用于定义元盒的回调,以及用于验证/清理和保存自定义post meta的回调。
function wpse70958_add_meta_boxes( $post ) {
// Get the page template post meta
$page_template = get_post_meta( $post->ID, \'_wp_page_template\', true );
// If the current page uses our specific
// template, then output our custom metabox
if ( \'template-foobar.php\' == $page_template ) {
add_meta_box(
\'wpse70958-custom-metabox\', // Metabox HTML ID attribute
\'Special Post Meta\', // Metabox title
\'wpse70598_page_template_metabox\', // callback name
\'page\', // post type
\'side\', // context (advanced, normal, or side)
\'default\', // priority (high, core, default or low)
);
}
}
// Make sure to use "_" instead of "-"
add_action( \'add_meta_boxes_page\', \'wpse70958_add_meta_boxes\' );
function wpse70598_page_template_metabox() {
// Define the meta box form fields here
}
function wpse70958_save_custom_post_meta() {
// Sanitize/validate post meta here, before calling update_post_meta()
}
add_action( \'publish_page\', \'wpse70958_save_custom_post_meta\' );
add_action( \'draft_page\', \'wpse70958_save_custom_post_meta\' );
add_action( \'future_page\', \'wpse70958_save_custom_post_meta\' );
编辑整个
add_meta_box()
调用条件。