Как запустить функцию после wp () в файле wp-blog-header.php? - PullRequest
0 голосов
/ 16 марта 2019

Я хочу запустить функцию после строки 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-адресах, поэтому я сделал:

  1. Добавлено следующее правило rewrite в наш NGINX файл конфигурации:

rewrite \D+(\/\d+\/\D+)$ /index.php?redirect=$1 break;

Это правило добавляет дополнительный параметр redirect к URL (старому URL) со значением, которое я буду использовать для получения нового окончательного URL.

  1. Затем я запустите следующий код, чтобы получить это значение из входящего URL-адреса и получить окончательный URL-адрес, запросив таблицу из 2 столбцов, в которой каждое значение redirect_from сопоставляется с окончательным URL-адресом redirect_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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...