我正在尝试在引导的 walker 类中选择一种称为回退的方法。类名称为WPNavwalker。
我尝试了很多东西,但没有用。如 \命名空间\类\类名::回退, 命名空间\类\类名::回退
查看我的代码:
use NamespaceclassesWPNavwalker;
public static function show_menu()
{
wp_nav_menu( array(
'theme_location' => 'primary',
'depth' => 2, // 1 = no dropdowns, 2 = with dropdowns.
'container' => 'div',
'container_class' => 'collapse navbar-collapse',
'container_id' => 'bs-example-navbar-collapse-1',
'menu_class' => 'navbar-nav ml-auto',
'fallback_cb' => 'Classname::fallback',
'walker' => new NamespaceclassesWPNavwalker()
));
}
我只需要知道如何选择该方法
这是错误:未捕获错误:未定义的类常量"回退"。
public static function fallback( $args ) {
if ( current_user_can( 'edit_theme_options' ) ) {
/* Get Arguments. */
$container = $args['container'];
$container_id = $args['container_id'];
$container_class = $args['container_class'];
$menu_class = $args['menu_class'];
$menu_id = $args['menu_id'];
// initialize var to store fallback html.
$fallback_output = '';
if ( $container ) {
$fallback_output .= '<' . esc_attr( $container );
if ( $container_id ) {
$fallback_output .= ' id="' . esc_attr( $container_id ) . '"';
}
if ( $container_class ) {
$fallback_output .= ' class="' . esc_attr( $container_class ) . '"';
}
$fallback_output .= '>';
}
$fallback_output .= '<ul';
if ( $menu_id ) {
$fallback_output .= ' id="' . esc_attr( $menu_id ) . '"'; }
if ( $menu_class ) {
$fallback_output .= ' class="' . esc_attr( $menu_class ) . '"'; }
$fallback_output .= '>';
$fallback_output .= '<li><a href="' . esc_url( admin_url( 'nav-menus.php' ) ) . '" title="' . esc_attr__( 'Add a menu', 'wp-bootstrap-navwalker' ) . '">' . esc_html__( 'Add a menu', 'wp-bootstrap-navwalker' ) . '</a></li>';
$fallback_output .= '</ul>';
if ( $container ) {
$fallback_output .= '</' . esc_attr( $container ) . '>';
}
// if $args has 'echo' key and it's true echo, otherwise return.
if ( array_key_exists( 'echo', $args ) && $args['echo'] ) {
echo $fallback_output; // WPCS: XSS OK.
} else {
return $fallback_output;
}
}
}
文档链接:https://github.com/wp-bootstrap/wp-bootstrap-navwalker
这有效并模仿您的代码:
<?php
// this is the class defining a callback
class MyClass
{
public static function ThisIsCallback($args)
{
var_dump([
'I am your callback',
$args
]);
}
}
// this is a class /w method calling the callback
class AnotherClass
{
public function whatever($params, $callback)
{
var_dump([
'I am whatever'
]);
$callback($params);
}
}
// this is the actual call
(new AnotherClass)->whatever([1,2,'I am your param'],[MyClass, ThisIsCallback]);
输出:
array(1) {
[0]=>
string(13) "I am whatever"
}
array(2) {
[0]=>
string(18) "I am your callback"
[1]=>
array(3) {
[0]=>
int(1)
[1]=>
int(2)
[2]=>
string(15) "I am your param"
}
}