Ich habe meinen Kopf gegen die Wand geschlagen und versucht, die Lösung für mein aktuelles Problem herauszufinden. Einfach gesagt, ich habe eine Template-Seite 'Seite-Startseite.php' erstellt, kann eine Meta-Box aufrufen, um die Seitenvorlage aufzurufen, aber wenn ich versuche, die Seite mit Daten in der Meta-Box zu aktualisieren, verschwinden die Daten.Benutzerdefinierte Metabox für Seitenvorlage, die keine Daten speichert
-Code unten:
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');
Irgendwelche Vorschläge geschätzt werden.
versuchen mit diesem add_action (‚save_post‘, ‚page_save_custom_post_meta‘); –
Danke, Akshay! Leider wird auch nach dem Hinzufügen der Aktion "Post speichern" immer noch nicht gespeichert. Ich war mir nicht sicher, ob es eine 'save_page'-Aktion gibt, aber ich glaube nicht, dass es eine gibt. – Leroy
können Sie den Namen des Eingabedatentyps in eine Zeichenfolge ändern und ändern Sie sie bitte entsprechend im Anforderungsbereich. Ich bin nicht sicher für diesen Vorschlag –