Передача заголовка предыдущей страницы в пользовательское поле оформления заказа в Woocommerce - PullRequest
0 голосов
/ 06 сентября 2018

С Woocommerce, можно ли передать заголовок предыдущей страницы в пользовательские поля оформления заказа?

1 Ответ

0 голосов
/ 07 сентября 2018

Обновлено - В следующем примере кода PHP Session используется для захвата заголовка предыдущей страницы (этот пример кода может быть расширен) :

add_action( 'template_redirect', 'grab_previous_page_title' );
function grab_previous_page_title() {
    session_start();

    // Not on checkout page
    if( ! is_checkout() ) { 
        $_SESSION['previous_page_title'] = wp_title('', false);
    }
}

На странице оформления заказа вы сможете получить заголовок предыдущей страницы, используя:

$previous_page_title = $_SESSION['previous_page_title'];

Затем на странице оформления заказа мы можем добавить этот заголовок предыдущей страницы в скрытое поле ввода:

// Checkout: Display a hidden input field with previous page title inside checkout form
add_action( 'woocommerce_after_order_notes', 'hidden_input_field_previous_page_title' );
function hidden_input_field_previous_page_title() {

    if( isset($_SESSION['previous_product_title']) ) {
        echo '<input type="hidden" name="previous_page_title" value="'.$_SESSION['previous_page_title'].'">';
    }
}

Затем при отправке заказа мы сохраняем значение пользовательского скрытого поля как метаданные заказа:

// Save the custom hidden field value as order meta data
add_action('woocommerce_checkout_create_order', 'save_previous_page_title', 22, 2 );
function save_previous_page_title( $order, $data ) {
    if ( isset($_POST['previous_page_title']) ) {
        $order->update_meta_data( '_previous_page_title', sanitize_text_field($_POST['previous_page_title']) );
    }
}

Код помещается в файл function.php вашей активной дочерней темы (или активной темы). Проверено и работает.

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