2012-12-21 88 views
2

我想從特定頁面的菜單中刪除鏈接。如何從wordpress中的主菜單中刪除鏈接

function wp_list_pages($args = '') { 
$defaults = array(
    'depth' => 0, 'show_date' => '', 
    'date_format' => get_option('date_format'), 
    'child_of' => 0, 'exclude' => '', 
    'title_li' => __('Pages'), 'echo' => 1, 
    'authors' => '', 'sort_column' => 'menu_order, post_title', 
    'link_before' => '', 'link_after' => '', 'walker' => '', 
); 

$r = wp_parse_args($args, $defaults); 
extract($r, EXTR_SKIP); 

$output = ''; 
$current_page = 0; 

// sanitize, mostly to keep spaces out 
$r['exclude'] = preg_replace('/[^0-9,]/', '', $r['exclude']); 

// Allow plugins to filter an array of excluded pages (but don't put a nullstring into the array) 
$exclude_array = ($r['exclude']) ? explode(',', $r['exclude']) : array(); 
$r['exclude'] = implode(',', apply_filters('wp_list_pages_excludes', $exclude_array)); 

// Query pages. 
$r['hierarchical'] = 0; 
$pages = get_pages($r); 

if (!empty($pages)) { 
    if ($r['title_li']) 
     $output .= '<li class="pagenav">' . $r['title_li'] . '<ul>'; 

    global $wp_query; 
    if (is_page() || is_attachment() || $wp_query->is_posts_page) 
     $current_page = $wp_query->get_queried_object_id(); 
    $output .= walk_page_tree($pages, $r['depth'], $current_page, $r); 

    if ($r['title_li']) 
     $output .= '</ul></li>'; 
} 

$output = apply_filters('wp_list_pages', $output, $r); 

if ($r['echo']) 
    echo $output; 
else 
    return $output; 

}

請告訴我,我能做些什麼。我已經搜索了所有關心此問題的所有問題,但仍無法解決問題。提前致謝 。

+0

'wp_list_pages()'有一個'exclude'選項,不是? –

回答

2

只需將其放置在主題的functions.php文件中即可。

function removeParentLinks() { 
$pages = wp_list_pages('echo=0&amp;title_li='); 
$pages = explode("</li>", $pages); 
$count = 0; 
foreach($pages as $page) { 
    if(strstr($page,"<ul>")) { 
     $page = explode('<ul>', $page); 
     $page[0] = str_replace('</a>','',$page[0]); 
     $page[0] = preg_replace('/\<a(.*)\>/','',$page[0]); 
     if(count($page) == 3) { 
      $page[1] = str_replace('</a>','',$page[1]); 
      $page[1] = preg_replace('/\<a(.*)\>/','',$page[1]); 
     } 
     $page = implode('<ul>', $page); 
    } 
    $pages[$count] = $page; 
    $count++; 
} 
$pages = implode('</li>',$pages); 
echo $pages; 

}

現在只需更換您的wp_list_pages();函數removeParentLinks();並離開你去。

+0

感謝您的回覆。是工作。 –

相關問題