2016-05-15 15 views
2

Der Grund für das hier (und nicht auf WordPress StackExchange) ist, weil ich habe das Gefühl, dass dies mit ungültigen PHP in Verbindung stehen könnte. Es scheint, dass mehr Benutzer mit PHP-Codierung hier vertraut sind.Benutzerdefinierte Walker-Menü für WordPress nicht funktioniert

Ich habe ein seltsames Problem, bei dem ich kein Bild zu einem Beitrag über die Medienbibliothek hinzufügen kann. Ich kann ein Bild hochladen, aber Wordpress zeigt die zuvor hochgeladenen Bilder nicht in der Medienbibliothek an, sodass ich keine von ihnen in einen neuen Beitrag einfügen kann. Grundsätzlich ruft die Medienbibliothek keine Bilder ab.

enter image description here

Bisher habe ich herausgefunden habe, dass dieses Problem zu meinem Thema spesific ist, und dass diese Zeile entfernen: require get_template_directory() . '/inc/css_menu_walker.php'; von meiner functions.php das Problem löst.

Allerdings muss ich den benutzerdefinierten Walker laden, um das Menü zu rendern. Was ist hier falsch? Soweit ich sehen kann ich die Vorlage richtig eingelegt habe, und ich kann nicht alle Fehler in css_menu_walker.php finden:

<?php 
class CSS_Menu_Maker_Walker extends Walker { 

    var $db_fields = array('parent' => 'menu_item_parent', 'id' => 'db_id'); 

    function start_lvl(&$output, $depth = 0, $args = array()) { 
    $indent = str_repeat("\t", $depth); 
    $output .= "\n$indent<ul>\n"; 
    } 

    function end_lvl(&$output, $depth = 0, $args = array()) { 
    $indent = str_repeat("\t", $depth); 
    $output .= "$indent</ul>\n"; 
    } 

    function start_el(&$output, $item, $depth = 0, $args = array(), $id = 0) { 

    global $wp_query; 
    $indent = ($depth) ? str_repeat("\t", $depth) : ''; 
    $class_names = $value = ''; 
    $classes = empty($item->classes) ? array() : (array) $item->classes; 

    /* Add active class */ 
    if(in_array('current-menu-item', $classes)) { 
     $classes[] = 'active'; 
     unset($classes['current-menu-item']); 
    } 

    /* Check for children */ 
    $children = get_posts(array('post_type' => 'nav_menu_item', 'nopaging' => true, 'numberposts' => 1, 'meta_key' => '_menu_item_menu_item_parent', 'meta_value' => $item->ID)); 
    if (!empty($children)) { 
     $classes[] = 'has-sub'; 
    } 

    $class_names = join(' ', apply_filters('nav_menu_css_class', array_filter($classes), $item, $args)); 
    $class_names = $class_names ? ' class="' . esc_attr($class_names) . '"' : ''; 

    $id = apply_filters('nav_menu_item_id', 'menu-item-'. $item->ID, $item, $args); 
    $id = $id ? ' id="' . esc_attr($id) . '"' : ''; 

    $output .= $indent . '<li' . $id . $value . $class_names .'>'; 

    $attributes = ! empty($item->attr_title) ? ' title="' . esc_attr($item->attr_title) .'"' : ''; 
    $attributes .= ! empty($item->target)  ? ' target="' . esc_attr($item->target ) .'"' : ''; 
    $attributes .= ! empty($item->xfn)  ? ' rel="' . esc_attr($item->xfn  ) .'"' : ''; 
    $attributes .= ! empty($item->url)  ? ' href="' . esc_attr($item->url  ) .'"' : ''; 

    $item_output = $args->before; 
    $item_output .= '<a'. $attributes .'><span>'; 
    $item_output .= $args->link_before . apply_filters('the_title', $item->title, $item->ID) . $args->link_after; 
    $item_output .= '</span></a>'; 
    $item_output .= $args->after; 

    $output .= apply_filters('walker_nav_menu_start_el', $item_output, $item, $depth, $args); 
    } 

    function end_el(&$output, $item, $depth = 0, $args = array()) { 
    $output .= "</li>\n"; 
    } 
} 

ich nicht die individuellen Wanderer selbst geschrieben habe. Ich habe es von hier: http://cssmenumaker.com/blog/wordpress-3-drop-down-menu-tutorial und es scheint, dass diese Seite seit 2013 nicht aktualisiert wurde. Dies führt zu der Annahme, dass der Code veraltet und mit der aktuellen Version von Wordpress inkompatibel sein könnte.

Wordpress-Version spielt keine Rolle. Ich habe das gleiche Problem in 4.5.2 und 4.4.3.

+0

Bitte bearbeiten Sie Ihre Frage, um den Code einzuschließen. Gibt es Fehlermeldungen in Ihrer Browser-Konsole oder PHP-Fehlerprotokolle? Wenn sich dieses Symbol unendlich dreht, ist es möglich, dass eine AJAX-Anfrage aufgrund eines PHP-Fehlers eine Fehlermeldung erhalten hat. –

+0

Der Blog, den du verlinkt hast, zeigt an, dass der Code für WordPress 3 ist. Daher ist es möglich, dass er nicht mit WordPress 4.4+ (vielleicht) kompatibel ist. –

Antwort

1

In meinem functions.php I ersetzt:

// Include the custom walker navigation 
require get_template_directory() . '/inc/css_menu_walker.php'; 

mit

/** 
* Custom walker navigation 
*/ 
require get_template_directory() . '/inc/css-menu-walker.php'; 

komplettem Unterschied hier: https://www.diffnow.com/?report=ba2d5

ich hatte auch einige Einbuchtung vor <?php zu Beginn meines CSS- menu-walker.php welches ich entfernt habe. Dies behebt das Problem.

Verwandte Themen