#wordpress #wordpress-hook
#wordpress #wordpress-hook
Вопрос:
Я хочу запустить функцию после wp();
строки в файле wp-blog-header.php
, что правильно hook
использовать здесь?
<?php
/**
* Loads the WordPress environment and template.
*
* @package WordPress
*/
if ( !isset($wp_did_header) ) {
$wp_did_header = true;
// Load the WordPress library.
require_once( dirname(__FILE__) . '/wp-load.php' );
// Set up the WordPress query.
wp();
/********************************************
I WANT TO RUN THE FUNCTION AT THIS POINT
********************************************/
// Load the theme template.
require_once( ABSPATH . WPINC . '/template-loader.php' );
}
Зачем мне нужен хук
Мы переходим на новый веб-сайт, и нам приходится заботиться о старых URL-адресах, так что я сделал:
- Добавлено следующее
rewrite
правило в нашNGINX
конфигурационный файл:
rewrite D (/d /D )$ /index.php?redirect=$1 break;
Это правило добавит дополнительный параметр redirect
к URL (старому URL) со значением, которое я буду использовать для получения нового окончательного URL.
- Затем я выполню следующий код, чтобы получить это значение из входящего URL и получить окончательный URL, запросив таблицу из 2 столбцов, которая сопоставляет каждое значение
redirect_from
с конечным URLredirect_to
:
/**
* 1. Check if the URL has a parameter [redirect]
* 2. If NO, proceed to the next step
* 3. If YES, then get that parameter value and look into [redirects] table
* 4. If you found a row that has that value, then get the [redirect_to] value
* 5. Redirect to that URL [redirect_to]
*/
if (isset($_GET['redirect'])) {
// Get the parameter value from the URL
$redirect_from = $_GET['redirect'];
// Add the table prefix to the table name
$table_name = $wpdb->prefix . 'redirects';
// The SQL query
$query = "
SELECT redirect_to
FROM $table_name
WHERE redirect_from = '$redirect_from';
";
// Run the SQL query and get the results
$result = $wpdb->get_results($query, OBJECT);
// If there was a result then do the redirection and exit
if (wp_redirect($result[0]->redirect_to)) {exit;}
}
Примечание:
Нет способа получить новые URL-адреса из старых URL-адресов, вот пример старого и нового URL-адресов:
Перенаправление с:
http://www.example.com/category/sub-category/post-id/slug
Для:
https://www.example.com/category/sub-category/yyyy/mm/dd/slug
Комментарии:
1. Если бы вы объяснили, почему вы хотели это сделать, мы могли бы предоставить несколько реальных предложений.
2. Спасибо @cabrerahector , я уже обновил вопрос, я ценю любую помощь.
3. Вы заглядывали в
Redirection
плагин, который делает именно это? Вы можете настроить все перенаправления на индивидуальном уровне или с помощью шаблонов, которые динамически соответствуют определенным ситуациям, а также 404 журнала, чтобы вы могли видеть, где могут потребоваться другие перенаправления. wordpress.org/plugins/redirection