it-swarm.com.de

Hinzufügen von benutzerdefinierten Feldern zu Wordpress-Navigationsmenüs

Ich habe den Navigationsmenüelementen ein neues benutzerdefiniertes Kontrollkästchen hinzugefügt. Das Kontrollkästchen wurde problemlos hinzugefügt, wenn ich es überprüfe. Es funktioniert, aber wenn ich es deaktivieren möchte, funktioniert es nicht und bleibt im aktivierten Zustand.

der folgende Code zeigt die Schritte zum Erstellen des benutzerdefinierten Kontrollkästchens>

es ist ein fehler enthalten?

Zuerst habe ich einen Kontrollkästchen-Schlüssel in der Datenbank erstellt

function YPE_setup_custom_fields($item) {
    $item->divider = get_post_meta($item->ID, '_menu_item_divider', true);
}
add_filter('wp_setup_nav_menu_item', 'YPE_setup_custom_fields');

dann habe ich den Update-Wert dafür erstellt

function YPE_update_custom_fields($menu_id, $menu_item_db_id, $menu_item_data) {
    if (is_array($_REQUEST['menu-item-divider'])) {
        $YPE_divider_value = $_REQUEST['menu-item-divider'][$menu_item_db_id];
        update_post_meta($menu_item_db_id, '_menu_item_divider', $YPE_divider_value);
}
add_action('wp_update_nav_menu_item', 'YPE_update_custom_fields', 10, 3);

dann habe ich die neue Klasse (Walker_Nav_Menu_Edit_Custom) erstellt

function YPE_edit_custom_walker($walker, $item_id) {
    return 'Walker_Nav_Menu_Edit_Custom';
}
add_filter('wp_edit_nav_menu_walker', 'YPE_edit_custom_walker', 10, 2);

dann habe ich das Kontrollkästchen in meiner neuen Klasse hinzugefügt (Walker_Nav_Menu_Edit_Custom)

<p class="field-link-divider description">
    <label for="edit-menu-item-divider-<?php echo $item_id; ?>">
        <input type="checkbox" id="edit-menu-item-divider-<?php echo $item_id; ?>" value="_blank" name="menu-item-divider[<?php echo $item_id; ?>]"<?php checked( $item->divider, '_blank' ); ?> />
        <?php _e( 'Show divider' ); ?>
    </label>
</p>
1
Shwan Namiq

Nach einiger Suche zur Lösung dieses Problems habe ich die richtige Antwort zur Lösung dieses Problems in den Update-Meta-Box-Werten gefunden, speziell in der Checkbox , die sich ein wenig von anderen HTML-Eingaben unterscheidet Tags wie uns Text, wählen Sie Tags

wenn wir update_post_meta box Werte für checked Checkbox verwenden. Gleichzeitig müssen wir update_post_meta zum Deaktivieren des Kontrollkästchenwerts verwenden

ich habe mein Problem wie folgt gelöst. Nur ich habe Post-Meta gelöscht, wenn ich das Kontrollkästchen deaktiviert habe

function YPE_update_custom_fields($menu_id, $menu_item_db_id, $menu_item_data) {
if (is_array($_REQUEST['menu-item-divider'])) {
    $YPE_divider_value = ;
    update_post_meta($menu_item_db_id, '_menu_item_divider', $_REQUEST['menu-item-divider'][$menu_item_db_id]);
} else {
    delete_post_meta($menu_item_db_id, '_menu_item_divider');
}
add_action('wp_update_nav_menu_item', 'YPE_update_custom_fields', 10, 3);
1
Shwan Namiq