Intereting Posts
Правильный способ создания страницы администрирования без добавления ее в меню html id удаляется для пользователя, не являющегося администратором? Мета-значение Массив Правила перезаписи флеша при обновлении опций с помощью API настроек Пользовательская навигация с использованием wp_nav_menu и walker Как проверить, существует ли мета-ключ сообщения в базе данных wordpress Разрешить члену иметь доступ только к настраиваемому типу сообщений. Разрешение редактировать только собственные записи wp_mail не отправляется при вложении Как встраивать содержимое одного сообщения в другой сайт Добавление ссылки настроек плагина после активации Пользовательский повтор не работает / событие Wp Cron Показать похожие сообщения на single.php, сгруппированные по таксономическим терминам, с выбранным объектом Post Custom Custom Field Как можно использовать woocommerce в папке mu-plugins? Как связать ссылки wp_links в цикле? Как я могу сделать wp-сайт в мобильном приложении?

У меня есть плагин, где я должен динамически изменять название страницы, отправив параметр в фильтр 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; }