首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用walker替换核心函数

如何使用walker替换核心函数
EN

Stack Overflow用户
提问于 2010-05-29 00:12:18
回答 1查看 623关注 0票数 0

我想修改在导航中列出页面的方式,特别是wp- el_start /classes.php中的函数classes.php。

我首先直接修改了classes.php,它工作得很好,但现在我想恢复classes.php,并将修改移出wordpress的内部文件。

我写了一个walker类,我想使用它,但我不知道如何使用它。我想将当前的wp_list_pages()调用替换为:

代码语言:javascript
复制
 $walker_pages = new Walker_Page_CustomTitle;
 wp_list_pages(array('walker' => $walker_pages, 'title_li' => '', 'depth' => '1'));

我尝试过使用这样的过滤器:

代码语言:javascript
复制
function wp_list_pages_custom() {
     $walker_pages = new Walker_Page_CustomTitle;
     wp_list_pages(array('walker' => $walker_pages, 'title_li' => '', 'depth' => '1'));
}
add_filter('widget_area_primary_aside', 'wp_list_pages_custom');

但使用此筛选器,网站将不再加载。

教程here告诉我应该把这段代码放在header.php中,但这只是把我的页面链接放在了标签中。

我希望我说得有道理。谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-05-29 00:24:26

如果wp_list_pages()在执行任何进一步的代码之前对传递的参数进行筛选,那将是最理想的。

然而,我所能看到的最好的方法是,简单地使用wp_list_pages()而不传递walker参数就可以使用walker,如下所示;

代码语言:javascript
复制
function my_custom_wp_pages($list, $args)
{
    $walker = new Walker_Page_CustomTitle;
    $args = array_merge($args, array('walker' => $walker, 'echo' => false);

    remove_filter('wp_list_pages', 'my_custom_wp_pages'); // avoid endless loop

    $list = wp_list_pages($args);

    add_filter('wp_list_pages', 'my_custom_wp_pages'); // add it back

    return $list;
}
add_filter('wp_list_pages', 'my_custom_wp_pages', 5, 2);

更新:

编辑add_filter调用以接受两个参数。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2930639

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档