【问题标题】:Wordpress filter not clearly understoodWordPress 过滤器不清楚
【发布时间】:2016-03-25 08:21:54
【问题描述】:

我正在尝试自定义 Wordpress 主题。我必须修改主菜单。

所以我假设我必须添加一个过滤器才能做到这一点。现在我有:

functions.php:

add_filter( '__header_one_page' , '_one_page_menu');

function _one_page_menu($data) {
  return '<h1>Hello World</h1>';
} //end of _one_page_menu

header.php:

[...]
<?php
apply_filters('__header_one_page', do_action( '__header' ));
?>

并且菜单显示出来了,没有任何修改。

如果有人可以提供帮助,我想这并不复杂,但我无法弄清楚出了什么问题。

提前致谢, 巴德。

【问题讨论】:

  • 你想在主菜单上做什么样的改变?改变html结构?在主菜单之前添加内容?尽量解释
  • 我想修改菜单项。实际上,我正在主题内实现单页功能,并且需要调整标题菜单以反映页面部分而不是站点的主菜单。
  • 你不直接在管理员里面做吗?
  • 没有。我希望该菜单取决于各个部分。我的设计模式是,我将一页设置为“一页”类型。然后所有子页面都显示为部分。
  • 因此,必须根据子页面生成标题菜单。我认为目前这不是问题:它正在修改我不知道的标题。我已经有了页面 ID。

标签: wordpress filter wordpress-theming


【解决方案1】:

问题解决了。我正在使用 Customizr 主题,它在 inc/parts/class-header-menu.php 中有一个特定的过滤器。这是我们想要看到的代码:

/***************************************
* VIEWS
****************************************/
/**
* Menu Rendering : renders the navbar menus, or just the sidenav toggle button
* hook : '__navbar'
*
* @package Customizr
* @since Customizr 3.0
*/
function tc_menu_display() {
  ob_start();

    //renders the regular menu + responsive button
    if ( ! $this -> tc_is_sidenav_enabled() ) {
      $this -> tc_regular_menu_display( 'main' );
    } else {
      $this -> tc_sidenav_toggle_button_display();
      if ( $this -> tc_is_second_menu_enabled() )
        $this -> tc_regular_menu_display( 'secondary' );
      else
        $this -> tc_maybe_display_second_menu_placeholder();
    }

  $html = ob_get_contents();
  ob_end_clean();

  echo apply_filters( 'tc_menu_display', $html );
}

现在,我们只需 add_filter( 'tc_menu_display' , '_one_page_menu'); 并对其进行情绪化处理。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-07-02
    • 2021-06-16
    • 2018-02-24
    • 1970-01-01
    • 2014-06-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多