Je me cognais la tête contre le mur en essayant de trouver la solution à mon problème actuel. Autrement dit, j'ai créé une page de modèle 'page-home.php', je peux obtenir une méta-boîte à appeler sur le modèle de page, mais en essayant de mettre à jour la page avec des données dans la méta-boîte, les données disparaissent.Méta-case personnalisée pour le modèle de page ne sauvegardant pas les données
code ci-dessous:
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');
Toutes les suggestions sont appréciés.
essayer avec cette add_action (« save_post », « page_save_custom_post_meta »); –
Merci, Akshay! Malheureusement, même après l'ajout de l'action «enregistrer la publication», il ne sera toujours pas enregistré. Je ne savais pas trop s'il y avait une action 'save_page', mais je ne crois pas qu'il y en ait. – Leroy
pouvez-vous changer votre nom de type d'entrée une certaine chaîne à somestring et s'il vous plaît changer dans la zone de demande en conséquence. Je ne suis pas sûr de cette suggestion –