Как динамически добавить подменю в Wordpress PHP? - PullRequest
0 голосов
/ 26 апреля 2019

Я пытаюсь добавить функцию входа / выхода на моем новом сайте dernier.com. Как добавить вход / выход из системы в качестве подменю в разделе «Моя учетная запись»?

Я просмотрел каждый документ для меню Wordpress, попытался найти решения. Но пока ничего.

function add_loginout_link( $items, $args ) {
    $parent_title = get_the_title($post->post_parent);
    //echo $parent_title;
    //var_dump($items); 

    $menu_items = wp_get_nav_menu_items("Main Menu 2");
    foreach ($menu_items as $value) {
        //echo $value->title;  
        //echo $value->slug;
        if($value->title == "My Account"){
            //echo var_dump($value);
            $x = get_post( wc_get_page_id( 'myaccount' ) ); 
            $x->menu_item_parent = "1377";
            $test = new WP_POST($x);
            //echo var_dump($test);
            $items[] = $test; 

        }
    }
  return $items;

}

> I get the following error:  Your PHP code changes were rolled back due
> to an error on line 443 of file wp-content/themes/rosa/functions.php.
> Please fix and try saving again.   Uncaught Error: [] operator not
> supported for strings in wp-content/themes/rosa/functions.php:443 
> Stack trace:
> #0 wp-includes/class-wp-hook.php(286): add_loginout_link('<li id="menu-it...', Object(stdClass))
> #1 wp-includes/plugin.php(208): WP_Hook->apply_filters('<li id="menu-it...', Array)
> #2 wp-includes/nav-menu-template.php(243): apply_filters('wp_nav_menu_ite...', '<li id="menu-it...',
> Object(stdClass))
> #3 wp-content/themes/rosa/header.php(138): wp_nav_menu(Object(stdClass))
> #4 wp-includes/template.php(704): require_once('/var/www/UshaFo...')
> #5 wp-includes/template.php(653): load_template('/var/www/UshaFo...', true)enter code here
> #6 wp-includes/general-template.php(41): locate_template(Array, true)
> #7 wp-content/themes/rosa/page.php(9): get_header()
> #8 wp-includes/template-loader.php(77): include('/var/www/UshaFo...')
> #9 /var/www/U

1 Ответ

0 голосов
/ 27 апреля 2019

Попробуйте этот скрипт.

Вы должны заменить secondary-menu на идентификатор вашего меню.

add_filter( 'wp_nav_menu_items', 'add_loginout_link', 10, 2 );
function add_loginout_link( $items, $args ) {

    if (is_user_logged_in() && $args->theme_location == 'secondary-menu') {

        $items .= '<li><a href="'. wp_logout_url( home_url() ) .'">Log out</a></li>';
    }elseif (!is_user_logged_in() && $args->theme_location == 'secondary-menu') {
        $items .= '<li><a href="' . get_permalink( wc_get_page_id( 'myaccount' ) ) . '">My Account</a></li>';
    }
    return $items;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...