2

我想从特定页面的菜单中删除链接。

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;

}

请告诉我我能做什么。我已经搜索了所有与此相关的先前问题,但还无法解决问题。提前致谢 。

4

1 回答 1

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() 的函数;你走了。

于 2012-12-21T10:47:56.100 回答