Мой сайт построен с использованием Elementor
с использованием GeneratePress
в качестве темы по умолчанию, и я хочу заменить окончательный текст вывода некоторыми значениями из базы данных. Этот плагин
Real-Time Find and Replace
https://wordpress.org/plugins/real-time-find-and-replace/ отлично выполняет функцию замены и использует действие:
//Handles find and replace for public pages
add_action( 'template_redirect', 'far_template_redirect' );
для замены текста с помощью кода:
function far_ob_call( $buffer ) { // $buffer contains entire page
$far_settings = get_option( 'far_plugin_settings' );
if ( is_array( $far_settings['farfind'] ) ) {
foreach ( $far_settings['farfind'] as $key => $find ) {
if( isset( $far_settings['farregex'][$key] ) ) {
$buffer = preg_replace( $find, $far_settings['farreplace'][$key], $buffer );
} else {
$buffer = str_replace( $find, $far_settings['farreplace'][$key], $buffer );
}
}
}
return $buffer;
}
Я не могу использовать плагин напрямую, потому что он перераспределяет текст с текстом, и мне нужно извлекать данные из базы данных, поэтому я должен сделать свой собственный плагин. Но я нашел этот блог: https://markjaquith.wordpress.com/2014/02/19/template_redirect-is-not-for-loading-templates/, который говорит мне использовать фильтр:
add_filter( 'template_include', 'my_callback' );
вместо вышеуказанного действия в плагине:
add_action( 'template_redirect', 'far_template_redirect' );
Но плагин использует действие.
Что использовать?
Описание плагина гласит: "Set up find and replace rules that are executed AFTER a page is generated by WordPress, but BEFORE it is sent to a user's browser."
это то, что я точно хочу. То есть заменить текст после создания страницы и непосредственно перед отправкой страницы в браузер, но плагин использует для этого action
, а другие блоги предлагают использовать filter
?