Intereting Posts
Устранение неполадок «У вас недостаточно прав для доступа к этой странице». wp_nav_menu (вторичное меню), не добавляющее текущие классы Пользовательские типы сообщений – удалить оповещения по умолчанию после пустого массива? создать статическую папку, независимую от WordPress какие права chmod рекомендуется указывать для каждой папки проектов WordPress Передайте данные обратно в TinyMCE от Thickbox Странные вопросы при регистрации Предупреждение об ошибке: Объявление описания_walker :: start_el после обновления PHP Как создать динамическое выпадающее меню на странице архива / срока по терминологии Meta? Функция быстрого вызова функции обратного вызова, использующая переменную в начальном теге Назначение нескольких ролей, перекрытие возможностей Как изменить форму комментариев несколькими способами? Массовый крюк действия для страниц администратора, который использует WP_List_Table Использование вкладок в виджетах администратора Частные ли комментарии частного сообщения?

Динамическое переопределение Fancy Title – часть II

Я выполнил инструкцию @ pat-j и @cjbj в этом ответе: Dynamicically Override Fancy Title, и я получил результат переопределения заголовка. Теперь мне нужно динамически изменить этот заголовок. Я написал эту функцию:

add_filter ('presscore_get_page_title','netbooking_presscore_get_page_title',10,1); function netbooking_presscore_get_page_title ( $title ) { if( is_page( '1057' ) ){ $GLOBALS["content"] = $content; 

// Это считывает ввод с учетом значения по умолчанию в случае ошибки

 $INPUT = function($param, $default, $prefix = true){ $key = $prefix ? 'netbooking_structure_'.$param : $param; return isset($GLOBALS["content"][$key]) ? $GLOBALS["content"][$key] : $default; }; 

// Это чтение ввода GET

 $language = $INPUT('language', 'it', false); $lang = substr($language, 0, 2); $upwd = $INPUT('upwd', '8UDW37tF', false); $cryptedID = $INPUT('crypted_id', 'Nel6LjH9xZ4=', false); $structure_id = $INPUT('sid', 268, false); $accomodation_id = $INPUT('aid', '4894', false); 

// Это вызывает и получает XML с данными о размещении

 $today = getdate(); $api = 'http://url'; $query = http_build_query([ 'get' => 'getaccomodation', 'upwd' => $upwd, 'id' => $structure_id, 'idacc' => $accomodation_id, 'type' => 'p', 'mode' => 'xml', 'ukey' => 'create', 'l' => $lang, 'dstart' => $today['mday'], 'mstart' => $today['mon'], 'ystart' => $today['year'], ]); $xml = new SimpleXMLElement(file_get_contents($api. '?' . $query)); $accomodation = $xml->accomodation; // Ottengo l'XML del prezzo della accomodation $api = 'http://netbooking.naturalbooking.it/getnbdata.php'; $query = http_build_query([ 'get' => 'accomodationminprice', 'upwd' => $upwd, 'id' => $structure_id, 'idacc' => $accomodation_id, 'type' => 'p', 'mode' => 'xml', 'ukey' => 'create', 'l' => $lang, ]); $priceData = new SimpleXMLElement(file_get_contents($api. '?' . $query)); 

// Здесь мы получаем ссылку для текущего размещения

 $link = 'http://url'; $query = http_build_query([ 'cmd' => 'bookstep1', 'id' => $cryptedID, 'type' => 'p', 'l' => $lang, 'idacc' => $accomodation_id ]); $link = $link. '?' . $query; 

// Локальные настройки

 setlocale(LC_TIME, $language); 

// Получить заголовок

  $accomodation->id; if ($accomodation){ foreach($accomodation as $accomodation) { $title = $accomodation->name_struct." ".$accomodation->name; } } } return $title; } 

Он всегда возвращает имя первого размещения в списке вместо текущего имени.

EDIT Я определил проблему внутри функции get. но я не могу понять, почему то же самое внутри шаблона страницы работает, тогда как внутри крючка это не работает. Это последняя версия функции:

 // ACCOMODATION TITLE add_filter ('presscore_get_page_title','netbooking_presscore_get_page_title',10,1); // filtro che aggiunge la funzione per sovrascrivere il title function netbooking_presscore_get_page_title ( $title ) { // title function if( is_page( '1057' ) ){ // conditional output global $content; $GLOBALS["content"] = $content; // This reads input considering a default value in case of error $INPUT = function($param, $default, $prefix = true){ $key = $prefix ? 'netbooking_structure_'.$param : $param; return isset($GLOBALS["content"][$key]) ? $GLOBALS["content"][$key] : $default; }; // Read GET input $language = $INPUT('language', 'it', false); $lang = substr($language, 0, 2); $upwd = $INPUT('upwd', '8UDW37tF', false); $cryptedID = $INPUT('crypted_id', 'Nel6LjH9xZ4=', false); $structure_id = $INPUT('sid', 268, false); $accomodation_id = $INPUT('aid', '4894', false); // Build XML Accomodation $today = getdate(); $api = 'http://myurl.it'; $query = http_build_query([ 'get' => 'getaccomodation', 'upwd' => $upwd, 'id' => $structure_id, 'idacc' => $accomodation_id, 'type' => 'p', 'mode' => 'xml', 'ukey' => 'create', 'l' => $lang, 'dstart' => $today['mday'], 'mstart' => $today['mon'], 'ystart' => $today['year'], ]); $xml = new SimpleXMLElement(file_get_contents($api. '?' . $query)); // Imposto il locale setlocale(LC_TIME, $language); $nomestruttura=(string)$xml->accomodation->name_struct; $nome=(string)$xml->accomodation->name; $title=$nomestruttura." ".$nome; } return $title; } 

Я, наконец, понял. Окончательный вариант функции:

 <?php // ACCOMODATION TITLE add_filter ('presscore_get_page_title','netbooking_presscore_get_page_title',10,1); function netbooking_presscore_get_page_title ( $title ) { if( is_page( '1057' ) ){ $GLOBALS["content"] = $content; // This reads input considering a default value in case of error $INPUT = function($param, $default, $prefix = true){ $key = $prefix ? 'netbooking_structure_'.$param : $param; return isset($GLOBALS["content"][$key]) ? $GLOBALS["content"][$key] : $default; }; // Read input GET $language = $INPUT('language', 'it', false); $lang = substr($language, 0, 2); $upwd = $INPUT('upwd', '8UDW37tF', false); $cryptedID = $INPUT('crypted_id', 'Nel6LjH9xZ4=', false); $structure_id = $INPUT('sid', 268, false); $accomodation_id = $INPUT('aid', '4894', false); // XML accomodation $today = getdate(); $api = 'http://'; $query = http_build_query([ 'get' => 'getaccomodation', 'upwd' => $upwd, 'id' => $structure_id, 'idacc' => $accomodation_id, 'type' => 'p', 'mode' => 'xml', 'ukey' => 'create', 'l' => $lang, 'dstart' => $today['mday'], 'mstart' => $today['mon'], 'ystart' => $today['year'], ]); $xml = new SimpleXMLElement(file_get_contents($api. '?' . $query)); // Imposto il locale setlocale(LC_TIME, $language); $url="htp://"; $xml = simplexml_load_file($url); $nomestruttura=(string)$xml->accomodation->name_struct; $nome=(string)$xml->accomodation->name; $title=$nomestruttura." ".$nome; } return $title; } ?> 

Я понял, что ошибка заключается в функции для получения xml. Теперь я должен решить это. РЕДАКТИРОВАТЬ И РЕШИТЬ

  // ACCOMODATION TITLE add_filter ('presscore_get_page_title','netbooking_presscore_get_page_title',10,1); // filter for title function netbooking_presscore_get_page_title ( $title ) { // function to override title if( is_page( icl_object_id('1057')) ){ // Conditional output with ICL support // Added Query global $wp_query; // Get Values $content = []; $content["crypted_id"] = get_option('netbooking_'.'home'.'_crypted_id_meta'); $content["upwd"] = get_option('netbooking_'.'home'.'_upwd_meta'); $content["structure_id"] = get_option('netbooking_'.'home'.'_structure_id_meta'); $content["language"] = netbooking_get_language(); $content["sid"] = isset($_GET['sid']) ? $_GET['sid'] : $wp_query->query_vars['sid']; $content["aid"] = isset($_GET['aid']) ? $_GET['aid'] : $wp_query->query_vars['aid']; foreach ($GLOBALS['structure'.'-options'] as $key => $option) { $content[$key] = get_option($key); } $GLOBALS["content"] = $content; // Function to read default values in case of error $INPUT = function($param, $default, $prefix = true){ $key = $prefix ? 'netbooking_structure_'.$param : $param; return isset($GLOBALS["content"][$key]) ? $GLOBALS["content"][$key] : $default; }; // GET Input $language = $INPUT('language', 'it', false); $lang = substr($language, 0, 2); $upwd = $INPUT('upwd', '8UDW37tF', false); $cryptedID = $INPUT('crypted_id', 'Nel6LjH9xZ4=', false); $structure_id = $INPUT('sid', 268, false); $accomodation_id = $INPUT('aid', '4894', false); // Accomodation XML $today = getdate(); $api = 'http://myurl.it'; $query = http_build_query([ 'get' => 'getaccomodation', 'upwd' => $upwd, 'id' => $structure_id, 'idacc' => $accomodation_id, 'type' => 'p', 'mode' => 'xml', 'ukey' => 'create', 'l' => $lang, 'dstart' => $today['mday'], 'mstart' => $today['mon'], 'ystart' => $today['year'], ]); $xml = new SimpleXMLElement(file_get_contents($api. '?' . $query)); // Imposto il locale setlocale(LC_TIME, $language); $nomestruttura=(string)$xml->accomodation->name_struct; $nome=(string)$xml->accomodation->name; $title=$nomestruttura." ".$nome; } return $title; } 

Это, наконец, работает!