Поддержка Проблемы и решения Почему не работает стандартная функция выхода?

  • Добрый день. Пытаюсь добавить кнопку выхода к форме добавления комментария. Добавил в function.php

    function wph_change_submit_label($defaults) {
     $text_out = mb_convert_encoding('Выйти', 'utf-8', 'cp-1251'); 
    
    $defaults['title_reply'] =
    
     '<p><h3 id="reply-title" class="comment-reply-title"><a href="' . sprintf( wp_logout_url( apply_filters( 'the_permalink', get_permalink( $post_id ) ) )). '" title=' . sprintf( $text_out). '>' . sprintf( $text_out). '</a></h3></p>';
    
        return $defaults;
    }
    add_filter('comment_form_defaults', 'wph_change_submit_label');

    ссылка выйти появилась, но она ссылается просто на текущую страницу, что то вроде http://сайт.ru/статья , и при нажатии на неё ,страница просто обноваляется без выхода из ссесии. Если просто добавить её в comments.php, она отрабатывает как надо.
    В чём может быть проблема почему функция выхода не работает? Может есть альтернативный вариант?

    • Тема изменена 6 лет назад пользователем amagonn.
    • Тема изменена 6 лет назад пользователем amagonn.
Просмотр 4 ответов — с 1 по 4 (всего 4)
  • возможно, что вместо:
    wp_logout_url( apply_filters( 'the_permalink', get_permalink( $post_id ) ) )

    будет достаточно:
    wp_logout_url( get_permalink() )

    Автор amagonn

    (@amagonn)

    Это я в первую очередь попробовал, но не выходит если использовать просто wp_logout_url() функция срабатывает, но не возвращает на текущую страницу, если использовать вместе с get_permalink(), страница просто обновляется, но выход из сессии не срабатывает

    anonymized-14765447

    (@anonymized-14765447)

    Такая конструкция:

    <?php
    if ( is_user_logged_in() ) {
    		echo '<a href="'.wp_logout_url( get_permalink() ).'" title="Выход">Выход</a>';
    	} else {
    		echo '<a href="'.wp_login_url( get_permalink() ).'" title="Авторизация">Авторизация</a>';
    }
    ?>

    отлично работает.

    Точно также отлично работает и более простой вариант:

    <?php wp_loginout( get_permalink() ); ?>

    Про wp_loginout(); можно почитать тут.

    Модератор Sergey Biryukov

    (@sergeybiryukov)

    Live and Learn

    почему функция выхода не работает?

    Потому что у вас в коде две ошибки:

    1. Не определена переменная $post_id:
      
      Notice: Undefined variable: post_id
      
    2. Лишний вызов sprintf(), приводящий к пустой ссылке:
      
      Warning: sprintf(): Too few arguments
      
    3. Можно просто убрать и то и другое.

Просмотр 4 ответов — с 1 по 4 (всего 4)
  • Тема «Почему не работает стандартная функция выхода?» закрыта для новых ответов.