Может быть, я упустил это, но сколько бы я ни искал, я не мог найти, какой action
перехватывать, когда подписка меняет цену или частоту в подписках Woocommerce.
документация говорит, что для поддержки изменений цен в вашем платежном шлюзе вы должны перечислить subscription_amount_changes
, но нигде не говорится, какая функция будет вызвана, когда сумма действительно изменится ..
Также в Ссылка на действие Мне не удалось найти хук действия, который вызывается при изменении количества или частоты подписки. Если у кого-то есть подсказка, какой хук использовать или как реализовать эту особенность, скажите, пожалуйста.
Хорошо, спасибо за комментарии и ответ @Reigel, поэтому, если я правильно понимаю, изменение подписки в меню администратора (к которому я действительно обращаюсь), должно обрабатываться save_post
действие. Не могли бы вы привести небольшой пример, как подключить это действие и проверить, является ли это подпиской, и получить $order_id
(Я думаю, это так же, как post_id
?) использовать в управлении подпиской звонки?
Большое спасибо уже!
Я постараюсь объяснить supports
,
subscription_amount_changes
это просто поддержка и не будет ничего увольнять. Вы можете использовать его для условных операторов, таких как:
if ( !$chosen_gateway->supports( 'subscription_amount_changes' )) {
echo 'Please be considerate and do not change the price for the chosen gateway does not support it.';
}
теперь другие плагины могут затем проверить, поддерживает ли выбранный шлюз subscription_amount_changes
и делать свои соответствующие действия.
ловушка действия, которая вызывается, когда сумма или частота подписки
изменения
подписка — это просто тип продукта. Это означает, что это просто пост с post_type
продукта. Количество и частота просто пост мета. все обрабатываются на save_post
действие. add_action( 'save_post', __CLASS__ . '::save_subscription_meta', 11 );
, Это на post_type=product
, Вы должны проверить также save_post
на post_type=shop_order
так как это больше подходит для проверки поддержки. Потому что уже выбран шлюз.
Это следует считать дополнением к ответу @Reigel. Если вы проголосуете за это, тоже проголосуйте за его ответ.
Вот пример подключения pre_post_update
действие. Это происходит немного раньше, чем save_post
действие. Оба действия запускаются в wp_insert_post()
функция в post.php
,
function post_save_subscription_check( $post_ID, $data )
{
if( $data['post_type'] == 'product' ) {
if (!empty($_POST['_subscription_price']) && get_post_meta($post_ID, '_subscription_price', true) != $_POST['_subscription_price']) {
/* do stuff here */
}
if (!empty($_POST['_subscription_period']) && get_post_meta($post_ID, '_subscription_period', true) != $_POST['_subscription_period']) {
/* do stuff here */
}
}
}
add_action('pre_post_update', 'post_save_subscription_check', 10, 2 );
get_post_meta()
и новое значение, хранящееся в $_POST
переменная и сравнивая их. functions.php
или пользовательский код плагина.$_POST
данные перед его использованием. Я не беспокоился здесь.