Поддержка Проблемы и решения Как получить title который формирует плагин ALL_IN_ONE_SEO_PACK?

  • 1. Можно получить через запрос к метаполю, но это лишний запрос, при том что он все равно выполняется плагином, зачем 2 раза его делать
    2. Как можно получить без запроса
    В документации плагина говорится как менять его

    add_action( 'aioseop_title', 'change_wordpress_seo_title' );
    
    function change_wordpress_seo_title( $title ){
        $title = 'modified title';
        return $title;
    }

    The filter is defined in the following location(s).
    /aioseop_class.php

            $title = apply_filters( ‘aioseop_title’, $title );
    
            $title = apply_filters( ‘aioseop_title’, $this->get_main_title( $post ) ); // get the title

    А как его получить не меняя?

Просмотр 12 ответов — с 16 по 27 (всего 27)
  • По крайней мере в случае с ALL_IN_ONE_SEO_PACK выводит title = H1, хотя плагином установлен другой

    А с Ёстом работает.

    Ёcт парсит вывод head секции, из-за чего бывают проблемы.

    Например, мета поле может быть пустым и title сформируется из H1.
    Т.е. как в общем случае получить тот тайтл, который будет выводиться на странице.

    вы путаете title и заголовок записи\страницы.
    надо что-то типа:

    
    <?php 
    $temp = get_post_meta(get_the_ID(), "_aioseop_title", true);
    if ($temp) {
        echo '<h1>'.$temp.'</h1>';
    } else {
        echo '<h1>'.get_the_title().'</h1>';
    }  
    ?>
    

    то есть на странице по умолчанию всегда выводится заголовок, установленный в записи\странице. а вот title страницы уже выводится seo-плагином.

    Я ничего не путаю а говорю именно о <title></title>
    Т.е. вы предлагаете решение — получать мета поле — если есть использовать его значение, если нет использовать wp_title для получения значения по умолчанию (которое будет совпадать с заголовком <h1></h1>

    Я правильно понял что простого способа «впрямую» получить то что будет выводится между тегами <title></title> нет, вне зависимости как это было сформировано?

    Модератор Yuri

    (@yube)

    Я правильно понял что простого способа «впрямую» получить то что будет выводится между тегами <title></title> нет, вне зависимости как это было сформировано?

    Вот чтобы вообще и всегда — нет и быть не может. Плагины и темы могут вытворять такое, что не приснится и в страшном сне. И это касается не только title, а вообще. В том и прелесть WP, что можно изменить практически всё, что он формирует. Но как это часто бывает, достоинства легко превращаются в недостатки.

    Я правильно понял что простого способа «впрямую» получить то что будет выводится между тегами <title></title> нет, вне зависимости как это было сформировано?

    неправильно. я вам пример похожий привел.
    либо в title попадет произвольное поле плагина, либо заголовок записи\страницы.
    все.
    wp_title тут не катит, ибо он все равно в большинстве случаев не будет совпадать с заголовком записи\страницы, ибо seo-плагин добавит там заголовок сайта или еще какие тексты, установленные в шаблоне.

    Наверное я никак не могу правильно сформулировать.
    Попробую с другой стороны.
    В плагине можно найти место где он формирует окончательный title.
    1.Как можно из этого места передать этот title в другую функцию?
    2.Или сделать так чтобы он был доступен для других функций?
    3.А вообще изначально хотелось чтобы не влезая в код плагина, можно было получить то, что он прописывает как итоговый title, т.е. что видно на странице

    у вас изначально нужный код есть:

    
    add_action( 'aioseop_title', 'change_wordpress_seo_title' );
    
    function change_wordpress_seo_title( $title ){
        global $mytitle;
        $mytitle = $title;
        return $title;
    }
    

    и таким образом у вас в глобальной переменной лежит ваш титл из плагина.

    Что то не получается

    add_action( 'aioseop_title', 'change_wordpress_seo_title' );
    
    function change_wordpress_seo_title( $title ){
        global $mymmtitle;
        $mymmtitle = $title;
    
        return $title;
    }
    do_action( 'aioseop_title');
    
    var_dump ( $mymmtitle);

    получаю NULL

    что за do_action?
    в какой функции вы это применяете?

    Ну а как заставить выполниться функцию change_wordpress_seo_title ?

    на фига его заставлять выполняться?
    она фильтром на 'aioseop_title' работает.
    плагин сформировал заголовок — заодно и в ваш $mymmtitle ушло его значение.

    чтобы вардамп использовать — сначала global $mymmtitle; сделайте.
    и вардамп должен быть где-нибудь в функции, которая выполняется после 'aioseop_title'

    Автор selftrips-ru

    (@selftrips-ru)

    Спасибо.
    2 раз прописал
    global $mymmtitle;там где получаю (экспериментировал прямо в теле записи используя плагин для вставки php [insert_php][/insert_php])
    var_dump ( $mymmtitle);
    т.е.

    global $mymmtitle;
    var_dump ( $mymmtitle);

    и все заработало.

Просмотр 12 ответов — с 16 по 27 (всего 27)
  • Тема «Как получить title который формирует плагин ALL_IN_ONE_SEO_PACK?» закрыта для новых ответов.