Intereting Posts
WordPress установлен, но не отображается! Как выбрать шаблон для персонализированного типа сообщения? Условное на пользовательском поле плагин metabolox Сохранить метаданные как временную метку, отобразить как «красивую» дату Функция в алфавитном порядке сортирует пользовательские типы сообщений, создавая дубликаты Как правильно изменить количество столбцов в двадцать четвертой детской теме? получить запрос () без сообщения? Категория перенаправления для URL с / категорией Страница архива, Реклама Каждые 3 сообщения Несколько экземпляров данных в таблице пользовательских таблиц плагинов при активации плагина Добавление переменного продукта в WooCommerce программно Безопасный способ использования name_save_pre? Как отобразить некоторые настройки для пользователя супер администратора только с помощью API настроек WP_Query для получения сообщений из продуктов WooCommerce, которые находятся только в каталоге как получить curent URL slug с архивной страницы

У меня есть плагин, где я должен динамически изменять название страницы, отправив параметр в фильтр the_title

Я использую shortcode и в этом хочу изменить заголовок, установив значение из базы данных с помощью пользовательских таблиц. Я попытался использовать фильтр the_title следующим образом

add_filter('the_title','set_page_title', 10, 2); function set_page_title($title, $id){ if(in_the_loop()) { return 'sdfdsfdsf'; } return $title; } 

Но моя проблема в том, что я хочу изменить это только на определенной странице не на всех страницах.

Это моя функция обратного вызова короткого кода

 function bmg_company_detail_shortcode($args, $content) { global $wpdb; $table_name = $wpdb->prefix . 'bmg_company'; $company_id = $_GET['id']; $output = ''; $result = $wpdb->get_results($wpdb->prepare("SELECT id,maincategoryid,name,website,yearfounded,supportpageurl,contactpage,country,about, isactive,contact_name,contact_email,contact_phone,support_phone,open_times,support_email, username, password from $table_name where id=%s", $company_id)); if($result) { foreach($result as $row) { set_page_title('',$row->name); $output = ' <h3 class="bmg-company-title">'. $row->name .'</h3> '; } } return $output; } 

Я хочу отправить параметр в функцию set_page_title, но это не сработает. Я хочу, чтобы это произошло только на странице, называемой компанией.

Solutions Collecting From Web of "У меня есть плагин, где я должен динамически изменять название страницы, отправив параметр в фильтр the_title"

Вы можете использовать is_page() чтобы изменить ее только на определенной странице. Я предполагаю, что пуля вашей страницы компании на самом деле является company

 add_filter( 'the_title','wpse_277956_the_title', 10, 2 ); function wpse_277956_the_title( $title, $id ){ if( in_the_loop() && is_page( 'company' ) ) { return bmg_company_detail_shortcode( false, false ); } return $title; } 

Получение идентификатора из URL-адреса страницы меня исправило.

 add_filter('the_title','set_page_title', 10, 2); function set_page_title($title, $id){ if(in_the_loop() && is_page( 'company' )) { $cid = isset($_GET['id']) ? $_GET['id'] : ''; if($cid != '') { return get_company_name($cid); } else { return $title; } } return $title; }