I am trying to select a method called fallback inside the walker class of bootstrap. The class name is called WPNavwalker.
I have tried a lot of thing but it didn't work. like \\Namespace\\classes\\Classname::fallback, Namespace\\classes\\Classname::fallback
See my code:
use Namespace\classes\WPNavwalker;
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 \Namespace\classes\WPNavwalker()
));
}
I just need to know how i can select that method
this is the error : Uncaught Error: Undefined class constant 'fallback'.
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;
}
}
}
link to documentation: https://github.com/wp-bootstrap/wp-bootstrap-navwalker
This works and mimics your code:
<?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]);
Output:
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"
}
}
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.