WordPress add_filter 'template_include' не работает - PullRequest
0 голосов
/ 01 мая 2020

Мой код:

<?php

/**
 * Plugin Name: xxxxxxxxxxxx
 * Plugin URI: https://xxxxxxxxxxxxx.com
 * Description: xxxxxxxxxx
 * Version: 2020/05/01
 * Author: xxxxxxxxxxxxxxx
 * Author URI: https://xxxxxxxxxxxxx.com
 */

error_reporting(E_ERROR | E_PARSE);

function ss_replace_text($page)
{
    return $page;
}

add_filter('template_include', 'ss_replace');

function ss_replace()
{
    ob_start();
    ob_start('ss_replace_text');
}

Он ничего не возвращает, он должен вернуть содержимое страницы в браузер.

1 Ответ

1 голос
/ 01 мая 2020

Вы должны взглянуть на то, как работают выходные буферы в PHP ob-start reference

Затем вам также необходимо понять, как работают фильтры. Они в основном принимают аргумент (который является выходом), отправляют его в фильтр, и фильтр должен возвращать (не эхо) измененный вывод Это хорошая ссылка

Затем убедитесь, что этот 'template_include' является фактическим фильтром, который вы хотите использовать. Это обычно используется для загрузки другого файла в зависимости от некоторых условий. Я никогда не использовал его для изменения вывода загруженного файла. ссылка на фильтр template_include

Код должен выглядеть примерно так:

add_filter('template_include', 'ss_replace');

function ss_replace( $template )
{
    ob_start('ss_replace_text');

    echo $template;

    return ob_get_clean();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...