2015-05-30 63 views
-1

我想爲我的wordpress菜單設置一個自定義步行者。其目的是爲了讓我的PHP代碼添加到菜單鏈接,我可以用文字和圖片是這樣的:「數組必須有兩個成員」是什麼意思?

<a href="http://mcadrives.com/?ref=<?PHP code goes here?>"> 

我一直在使用的每一個超鏈接和圖像的PHP代碼是這樣的:

<a href="http://mcadrives.com/?ref= 
    <?php 
     if (!empty ($_SERVER['QUERY_STRING'])){ 
     echo substr($_SERVER['QUERY_STRING'],4); } 
     else{ 
     echo 'mhammonds'; } 
    ?>> 

我將此添加到我的functions.php文件:

class Query_Nav extends Walker_Nav_Menu 
{ 
    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; 
     $classes[] = 'menu-item-' . $item->ID; 

     $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  ) .'"' : ''; 

     //ADD YOUR PHP HERE TO DETERMINE WHATEVER IT IS YOU NEED FOR YOUR LINK 
     if (! empty ($_SERVER['QUERY_STRING'])) { 
      $addedStuff = '?ref=' . substr($_SERVER['QUERY_STRING'], 4); 
      }else { 
        $addedStuff = '?ref=mhammonds'; 
} 
     $attributes .= ! empty($item->url)  ? ' href="' . esc_attr($item->url.$addedStuff) .'"' : ''; 
     //////////////////// 

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

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

和我說這個學步車 '新Query_Nav' 我的導航菜單-的template.php:

function wp_nav_menu($args = array()) { 
    static $menu_id_slugs = array(); 

    $defaults = array('menu' => '', 'container' => 'div', 'container_class' => '', 'container_id' => '', 'menu_class' => 'menu', 'menu_id' => '', 
    'echo' => true, 'fallback_cb' => 'wp_page_menu', 'before' => '', 'after' => '', 'link_before' => '', 'link_after' => '', 'items_wrap' => '<ul id="%1$s" class="%2$s">%3$s</ul>', 
    'depth' => 0, 'walker' => 'new Query_Nav()', 'theme_location' => ''); 

我當時被警告類的新Query_Nav()「在660行中沒有找到通知,所以我說像這樣:

function walk_nav_menu_tree($items, $depth, $r) { 
    $walker = (empty($r->walker)) ? new Walker_Nav_Menu : $r->walker; 
    $args = array($items, $depth, $r); 

    return call_user_func_array(array($walker, 'walk', 'new Query_Nav()'), $args); 

現在我還有一個警告,指出:

call_user_func_array() expects parameter 1 to be a valid callback, array must have exactly two members in /home/ballaboy258/public_html/wp-includes/nav-menu-template.php on line 660 

我已經刪除了每一個,都沒有解決問題。如果我刪除$ walker,則找不到「walk」。如果我刪除'走',那麼'新的Query_Nav()'找不到。如果我刪除'new Query_Nav()',再次找不到'新的Query_Nav()',這沒有任何意義。 我錯過了一個步驟,還是我的語法錯了?我很困惑,我可以「T在網絡上找到任何事情來幫助我。

回答

0

這意味着,你的回調陣列

array($walker, 'walk', 'new Query_Nav()'), 

應該包括兩個因素

  • 的方法

表示您呼叫

你提供了三種

+0

我已刪除每一個既不已經解決了這個問題的功能。如果我刪除$ walker,則找不到「walk」。如果我刪除'走',那麼'新的Query_Nav()'找不到。如果我刪除'new Query_Nav()',再次找不到'新的Query_Nav()',這沒有任何意義。@MarkBaker – Marquell

相關問題