Борьба за установку названий страниц для динамических страниц PHP на сайте WordPress

У меня есть несколько страниц PHP, которые я хочу отобразить на сайте WordPress.

Я использую плагин « Разрешить PHP в сообщениях и страницах» и добавляю страницы WordPress с кодом, например:

[php]include $_SERVER['DOCUMENT_ROOT'] . '/brand_details.php';[/php] 

Я делаю это так, потому что я хочу, чтобы решение было настолько портативным, насколько это возможно (поэтому я бы предпочел не редактировать functions.php, который может быть перезаписан в следующем обновлении WordPress), и я хочу, чтобы это было чем-то, что относительно нетехнические люди WordPress могут обойти свои головы.

Он работает достаточно хорошо с большинством страниц, но я борюсь со страницами, содержание которых зависит от параметра URL. В частности, я стараюсь установить заголовок страницы в этой ситуации.

Например, у меня есть страница с именем brand_details.php, которая отображает детали (имя, адрес, сайт и т. Д.) Brands.

Он вызывается с параметром URL, например: brand_url = acehardware

Из этого параметра я просматриваю данные бренда в таблице MySQL и показываю результаты.

Это работает нормально, но я теряю заголовок и нижний колонтитул WordPress. Чтобы обойти это, я попытался добавить следующий код в начало и конец моей страницы PHP:

В начале:

 require $_SERVER['DOCUMENT_ROOT'] . '/wp-load.php'; get_header(); 

В конце:

 get_footer(); 

Этот вид работал, хотя я столкнулся с несколькими проблемами стиля – но, возможно, это связано с тем, что я использую (это Divi).

Но то, что я не могу сделать, это показать название бренда в названии страницы. Чтобы использовать приведенный выше пример, я хочу отобразить заголовок, например «Aware Hardware Brand Details». Очевидно, что это должно измениться в зависимости от выбранного бренда.

Поэтому мой следующий шаг состоял в том, чтобы удалить этот код и попробовать вместо этого использовать фильтр wp_title . Вот что я сделал:

  1. Я сделал копию page.php в моей папке с темами, называемой page-custom.php, с помощью get_header(); вызов закомментирован и с именем шаблона: пользовательский вставлен вверху.

  2. Я сделал копию header.php в своей папке темы с именем header-custom.php со следующей строкой кода, вставленной в раздел <head> :

     <?php add_filter( 'wp_title', 'set_custom_title' ); ?> 
  3. Я добавил следующий код к brand_details.php:

     function set_custom_title($data) { return "$brand_name Details Page"; } get_header('custom'); 
  4. Я создал страницу WordPress на основе шаблона пользовательской страницы, который вызывает страницу brand_details.php.

Я ожидал, что страница будет отображаться как стандартная страница WordPress, но с названием страницы, установленной в соответствии с отображаемым брендом.

Что на самом деле произошло, так это то, что верхний и нижний колонтитулы WordPress появились правильно, но упомянутая выше переменная $ brand_name не использовалась функцией set_custom_title, поэтому название страницы оказалось «подробной страницей» без названия бренда.

Код (упрощенная для удобочитаемости), в котором я просматриваю название бренда, перед вызовом этой функции, выглядит следующим образом:

 $brand_url = $_REQUEST["brand_url"]; $sql = "SELECT * FROM brand_details WHERE brand_url = '$brand_url' LIMIT 1"; $stmt = $db_conn->prepare($sql); $stmt->execute(array()); $row = $stmt->fetch(); $brand_name = $row['brand_name']; 

Я знаю, что это работает, потому что я использую результаты на главной странице.

Я пробовал модифицировать последнюю строку, чтобы читать global $brand_name = $row['brand_name']; в надежде, что переменная $ brand_name станет доступной в функции set_custom_title, но безрезультатно.

Я приветствую любые советы о том, как достичь этого, и я открыт для альтернативных решений, чтобы выполнить работу.

Related of "Борьба за установку названий страниц для динамических страниц PHP на сайте WordPress"