-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在網絡上找到任何事情來幫助我。
我已刪除每一個既不已經解決了這個問題的功能。如果我刪除$ walker,則找不到「walk」。如果我刪除'走',那麼'新的Query_Nav()'找不到。如果我刪除'new Query_Nav()',再次找不到'新的Query_Nav()',這沒有任何意義。@MarkBaker – Marquell