Использование update_meta_data на странице благодарности WooCommerce - PullRequest
0 голосов
/ 01 марта 2019

Я пытаюсь ограничить доступ к странице благодарности WooCommerce, чтобы пользователь мог просматривать ее только один раз (в данный момент вы можете вставить URL-адрес в другом браузере и увидеть его до сих пор.)

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

Это правильный способ сделать это?Это то, что я сделал до сих пор, но это не работает!

//functions.php
add_action( 'wp_footer', 'hasLoadedPlayPage', 20 );
function hasLoadedPlayPage( $order ){
if( !is_wc_endpoint_url( 'order-received' ) ) return;
$order->update_meta_data('hasLoadedPlayPage', 'Yes');
$order->save();
}

//thankyou.php
$hasAnswered = get_post_meta($order->ID, 'hasLoadedPlayPage', true);
if(! $hasAnswered){
echo "NOT SEEN";
} else {
echo "SEEN";
}

Буду очень признателен за любые советы, которые мне могут дать!

Спасибо

Джеймс

1 Ответ

0 голосов
/ 01 марта 2019

выглядит хорошо для меня, за исключением того, что вам нужно использовать add_action('woocommerce_thankyou'... вместо wp_footer.Но поскольку woocommerce_thankyou получает только идентификатор заказа в качестве аргумента, вам нужно использовать $order = wc_get_order($order_id), чтобы получить объект WC_Order.Что-то вроде:

//functions.php
add_action( 'woocommerce_thankyou', 'hasLoadedPlayPage', 20, 1);
function hasLoadedPlayPage( $order_id ){
  $order = wc_get_order($order_id);
  $order->update_meta_data('hasLoadedPlayPage', 'Yes');
  $order->save();
}

//thankyou.php
$hasAnswered = get_post_meta($order->ID, 'hasLoadedPlayPage', true);
if(! $hasAnswered){
  echo "NOT SEEN";
} else {
  echo "SEEN";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...