Я занимаюсь разработкой сайта woocommerce и добавил пользовательскую кнопку-переключатель для страницы оформления заказа, мне нужно использовать такую же кнопку-переключатель оформления заказа на странице «Моя учетная запись», здесь мой код и его работа отлично работает на странице оформления заказа
<?php if (!function_exists('custom_checkout_question_field'))
{
/**
* Add custom question field after the billing form fields
*/
function custom_checkout_question_field($checkout)
{
echo "<div class='custom-question-field-wrapper custom-question-1'>";
echo sprintf('<p>%s</p>', __("Şahıs/Firma"));
woocommerce_form_field('sahıs_veya_firma', array(
'type' => 'radio',
'required' => true,
'class' => array(
'custom-question-field',
'form-row-wide'
) ,
'options' => array(
'sahıs' => 'Şahıs',
'firma' => 'Firma',
) ,
) , $checkout->get_value('sahıs_veya_firma'));
woocommerce_form_field('tc_no', array(
'type' => 'text',
'label' => 'TC No',
'required' => true,
'class' => array(
'custom-question-codice-fiscale-field',
'form-row-wide'
) ,
) , $checkout->get_value('tc_no'));
woocommerce_form_field('firma_ismi', array(
'type' => 'text',
'label' => 'Firma İsmi',
'required' => true,
'class' => array(
'custom-question-p-iva-field',
'form-row-wide'
) ,
) , $checkout->get_value('firma_ismi'));
woocommerce_form_field('vergi_no', array(
'type' => 'text',
'label' => 'Firma Vergi No',
'required' => true,
'class' => array(
'custom-question-ragione-sociale-field',
'form-row-wide'
) ,
) , $checkout->get_value('vergi_no'));
woocommerce_form_field('vergi_dairesi', array(
'type' => 'text',
'label' => 'Vergi Dairesi',
'required' => true,
'class' => array(
'custom-question-ragione-sociale-field',
'form-row-wide'
) ,
) , $checkout->get_value('vergi_dairesi'));
echo "</div>";
}
add_action('woocommerce_before_checkout_billing_form', 'custom_checkout_question_field');
}
if (!function_exists('custom_question_conditional_javascript'))
{
function custom_question_conditional_javascript()
{
?>
<script type="text/javascript">
(function() {
// Check if jquery exists
if(!window.jQuery) {
return;
};
var $ = window.jQuery;
$(document).ready(function() {
var questionField = $('.custom-question-field'),
codiceFiscaleField = $('.custom-question-codice-fiscale-field'),
pIvaField = $('.custom-question-p-iva-field'),
ragioneSocialeField = $('.custom-question-ragione-sociale-field ');
// Check that all fields exist
if(
!questionField.length ||
!codiceFiscaleField.length ||
!pIvaField.length ||
!ragioneSocialeField.length
) {
return;
}
function toggleVisibleFields() {
var selectedAnswer = questionField.find('input:checked').val();
if(selectedAnswer === 'sahıs') {
codiceFiscaleField.show();
pIvaField.hide();
ragioneSocialeField.hide();
} else if(selectedAnswer === 'firma') {
codiceFiscaleField.hide();
pIvaField.show();
ragioneSocialeField.show();
} else {
codiceFiscaleField.hide();
pIvaField.hide();
ragioneSocialeField.hide();
}
}
$(document).on('change', 'input[name=sahıs_veya_firma]', toggleVisibleFields);
$(document).on('updated_checkout', toggleVisibleFields);
toggleVisibleFields();
});
})();
</script>
<?php
}
add_action('wp_footer', 'custom_question_conditional_javascript', 1000);
}
if (!function_exists('custom_checkout_question_get_field_values'))
{
/**
* Get all form field values based on user submitted post data
*
*/
function custom_checkout_question_get_field_values()
{
$fields = ['sahıs_veya_firma' => '', 'tc_no' => '', 'firma_ismi' => '', 'vergi_no' => '', 'vergi_dairesi' => '', ];
foreach ($fields as $field_name => $value)
{
if (!empty($_POST[$field_name]))
{
$fields[$field_name] = sanitize_text_field($_POST[$field_name]);
}
else
{
unset($fields[$field_name]);
}
}
return $fields;
}
}
if (!function_exists('custom_checkout_question_field_validate'))
{
/**
* Custom woocommerce field validation to prevent user for completing checkout
*/
function custom_checkout_question_field_validate()
{
$field_values = custom_checkout_question_get_field_values();
if (empty($field_values['sahıs_veya_firma']))
{
wc_add_notice('Lütfen Şahıs / Firma sorusu için bir cevap seçiniz.', 'error');
}
if ($field_values['sahıs_veya_firma'] === 'sahıs' && empty($field_values['tc_no']))
{
wc_add_notice('Lütfen TC No girin', 'error');
}
if ($field_values['sahıs_veya_firma'] === 'firma' && empty($field_values['firma_ismi']))
{
wc_add_notice('Lütfen şahıs veya firma olduğunuzu belirtiniz', 'error');
}
if ($field_values['sahıs_veya_firma'] === 'firma' && empty($field_values['vergi_no']))
{
wc_add_notice('Lütfen Firma Vergi No giriniz.', 'error');
}
if ($field_values['sahıs_veya_firma'] === 'firma' && empty($field_values['vergi_dairesi']))
{
wc_add_notice('Lütfen Vergi Dairesi\'ni giriniz.', 'error');
}
}
add_action('woocommerce_checkout_process', 'custom_checkout_question_field_validate');
}
if (!function_exists('custom_checkout_question_field_save'))
{
/**
* Update order post meta based on submitted form values
*
* @param Integer $order_id New order id
*/
function custom_checkout_question_field_save($order_id)
{
$field_values = custom_checkout_question_get_field_values();
foreach ($field_values as $field_name => $value)
{
if (!empty($field_values[$field_name]))
{
update_post_meta($order_id, $field_name, $value);
}
}
}
add_action('woocommerce_checkout_update_order_meta', 'custom_checkout_question_field_save');
}
Это полный код, который я использовал, и его работа, мне нужно использовать одно и то же для своей страницы аккаунта и сохранять данные в каждом профиле пользователя