在我試圖找出當前問題的解決方案時,我的頭撞牆。簡而言之,我創建了一個'page-home.php'模板頁面,可以獲取一個元框以調用頁面模板,但嘗試使用元框中的數據更新頁面會使數據消失。下面不保存數據的頁面模板的自定義元框
代碼:
function page_add_meta_boxes($post) {
global $post;
if(!empty($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
{
$pageTemplate = get_post_meta($post->ID, '_wp_page_template', true);
// looks for page-home.php file to add our meta box
if($pageTemplate == 'page-home.php')
{
add_meta_box(
'page-custom-metabox', // $id
'Special Post Meta', // $title
'page_template_metabox', // $callback
'page', // $page
'normal', // $context
'high'); // $priority
}
}
}
add_action('add_meta_boxes_page', 'page_add_meta_boxes');
function page_template_metabox() {
wp_nonce_field(basename(__FILE__), 'page_meta_box_nonce');
$some_string = get_post_meta($post->ID, '_some_string', true);
?>
<input type="text" name="some-string" value="<?php echo $some_string; ?>" />
<?php
}
function page_save_custom_post_meta() {
if (!isset($_POST['page_meta_box_nonce']) || !wp_verify_nonce($_POST['page_meta_box_nonce'], basename(__FILE__))){
return;
}
// return if autosave
if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE){
return;
}
// check the user's permissions.
if (! current_user_can('edit_page', $post_id)){
return;
}
// save our string
if (isset($_REQUEST['some-string'])) {
update_post_meta($post_id, '_some_string', sanitize_text_field($_POST['some-string']));
}
}
add_action('publish_page', 'page_save_custom_post_meta');
add_action('draft_page', 'page_save_custom_post_meta');
add_action('future_page', 'page_save_custom_post_meta');
任何建議都理解的。
嘗試用這種ADD_ACTION(「save_post」,「page_save_custom_post_meta」); –
謝謝Akshay!不幸的是,即使在添加「保存帖子」操作後,它仍然不會保存。我不太確定是否有'save_page'動作,但我不相信。 – Leroy
您可以將您的輸入類型名稱some-string更改爲somestring,並請相應地在請求區域中進行更改。我不確定這個建議 –