• Друзяки, как мне поправить кору Вордпресса через functions.php? Насколько я понял, именно так можно переопределить те или иные куски кода, расположенные за пределами тем.

    Вот например, index.php, для отображения пагинации, предлагает лишь это:

    // Previous/next page navigation.
    
    the_posts_pagination( array(
    'prev_text'          => __( 'Previous page', 'sverbilokakalo' ),
    'next_text'          => __( 'Next page', 'sverbilokakalo' ),
    'before_page_number' => '<span class="meta-nav screen-reader-text">' . __( 'Page', 'sverbilokakalo' ) . ' </span>',
    ) );

    А разметку блок пагинации, вроде как, берёт уже из wp-includes, файл link-template.php:

    $template = '
      <nav class="navigation %1$s" role="navigation">
       <h2 class="screen-reader-text">%2$s</h2>
       <div class="nav-links">%3$s</div>
      </nav>';

    Есть же наверное способ научить этот кусок выглядеть по-другому? Подозреваю, что через functions.php. Не?

    • Тема изменена 7 лет, 8 месяцев назад пользователем carbonady.
Просмотр 13 ответов — с 1 по 13 (всего 13)
  • Модератор Юрій

    (@yube)

    Есть же наверное способ научить этот кусок выглядеть по-другому?

    Есть. В link-template.php, где Вы нашли вышеприведенный фрагмент кода, сразу за ним идет ответ на Ваш вопрос:

    
    	/**
    	 * Filters the navigation markup template.
    	 *
    	 * Note: The filtered template HTML must contain specifiers for the navigation
    	 * class (%1$s), the screen-reader-text value (%2$s), and placement of the
    	 * navigation links (%3$s):
    	 *
    	 *     <nav class="navigation %1$s" role="navigation">
    	 *         <h2 class="screen-reader-text">%2$s</h2>
    	 *         <div class="nav-links">%3$s</div>
    	 *     </nav>
    	 *
    	 * @since 4.4.0
    	 *
    	 * @param string $template The default template.
    	 * @param string $class    The class passed by the calling function.
    	 * @return string Navigation template.
    	 */
    	$template = apply_filters( 'navigation_markup_template', $template, $class );
    
    

    Вешаете на хук ‘navigation_markup_template’ свой обработчик, отдающий генератору альтернативный шаблон, и всё.

    Только не понятно, зачем вообще это делать?

    Модератор Denis Yanchevskiy

    (@denisco)

    WordPress-разработчик, denisco.pro

    Только не понятно, зачем вообще это делать?

    Например, чтобы убрать заголовок:

    function dco_navigation_markup_template() {
        return '
    	<nav class="navigation %1$s" role="navigation">
    		<div class="nav-links">%3$s</div>
    	</nav>';
    }
    
    add_filter('navigation_markup_template', 'dco_navigation_markup_template');

    Да, в общем-то для подобных задач.

    Денис, то есть «при встрече данного куска кода, он отныне будет проигнорирован»?

    не так — это фильтр в functions.php вашей темы.

    он всегда работает и фильтрует то, что там движок генерирует — движок добавляет этот дурацкий H2, а этот фильтр его удаляет.

    Модератор Юрій

    (@yube)

    этот дурацкий H2

    Простите, но он не дурацкий. Он предназначен для программ озвучки экрана, созданных для людей с особыми потребностями и ограниченными возможностями.

    Простите, но он не дурацкий. Он предназначен для программ озвучки экрана, созданных для людей с особыми потребностями и ограниченными возможностями.

    я по другому выражусь — зачем было H2 то использовать? в других местах движок заголовки H* для screen-reader-text не использует.

    Денис, спасибо. Я так понял, что этот фильтр для решения конкретной задачи по данному заголовку, либо по элементам данного типа. Но вопрос был о поиске более обобщённого решения — отлова и подмены блоков кода с теми или иными признаками — «начинается с …, оканчивается на …». При помощи регулярных ли выражений, встроенных ли инструментов Вордпресса.

    Есть такая возможность?

    Модератор Denis Yanchevskiy

    (@denisco)

    WordPress-разработчик, denisco.pro

    отлова и подмены блоков кода с теми или иными признаками — «начинается с …, оканчивается на …». При помощи регулярных ли выражений, встроенных ли инструментов Вордпресса.

    Есть такая возможность?

    Ищете фильтр для нужного куска и переопределяете как требуется.

    Ну или, видимо, использовать всякие плагины, типа Real-Time Find and Replace.

    Но вопрос был о поиске более обобщённого решения — отлова и подмены блоков кода с теми или иными признаками — «начинается с …, оканчивается на …».

    если речь про контент, то парсинг на the_content. если про функции движка — ищите нужные фильтры.

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

    Друзяки, большое спасибо! Много узнал, ясно — где копать. Что до непосредственной задачи, то вот подошедшее решение:

    add_filter('navigation_markup_template', 'my_navigation_template', 10, 2 );
    function my_navigation_template( $template, $class ){
     return '
      <nav class="navigation %1$s" role="navigation">
        <div class="row clearfix">
          <div class="column full" title="%2$s">
            <div class="nav-links">%3$s</div>
          </div>
        </div>		
      </nav>    
     ';
    }
    • Ответ изменён 7 лет, 8 месяцев назад пользователем carbonady.
    Модератор Sergey Biryukov

    (@sergeybiryukov)

    Live and Learn

    зачем было H2 то использовать?

    Чтобы обеспечить корректную структуру документа в соответствии со стандартами, см. обсуждение в тикете.

    в других местах движок заголовки H* для screen-reader-text не использует.

    В других местах этот текст не находится внутри тега <nav>.

    Чтобы обеспечить корректную структуру документа в соответствии со стандартами, см. обсуждение в тикете.

    что значит корректную? этот стандарт все еще черновик, разве не так? без этого H2 вдруг блок сломается?

    из-за этого H2 половина веб-мастеров вообще сносит screen-reader-text, ибо SEO-мифы по поводу заголовков неубиваемы.

    Модератор Sergey Biryukov

    (@sergeybiryukov)

    Live and Learn

    этот стандарт все еще черновик, разве не так?

    Черновик — та конкретная страница справочника, где требования к заголовкам изложены простым языком.

    WCAG 2.0 — вполне себе утверждённый стандарт, которого WordPress придерживается, чтобы быть доступным для как можно большего числа людей.

Просмотр 13 ответов — с 1 по 13 (всего 13)
  • Тема «Переопределить шаблоны core. Functions.php??» закрыта для новых ответов.