Как добавить пользовательские поля в форму комментариев в WordPress / WooCommerce 3+ - PullRequest
0 голосов
/ 24 февраля 2019

Example

Я пытаюсь добавить поле "Телефон" в комментариях к продукту (WooComerce 3+).* Для незарегистрированных пользователей тоже (гостей).Номер телефона должен видеть только администратор в админ-панели.

* Поле телефона необходимо сделать " Обязательно ".

Я пытаюсь этот код, но это не работает:

function true_phone_number_field( $fields ) {
$fields['phone'] = '<p class="comment-form-phone"><label for="phone">Phone</label> <input id="phone" name="phone" type="text" value="" size="30" /></p>';
}
add_filter( 'comment_form_default_fields', 'true_phone_number_field');

Ответы [ 3 ]

0 голосов
/ 27 февраля 2019
    // Add phone number field

    function add_review_phone_field_on_comment_form() {
        echo '<p class="comment-form-phone uk-margin-top"><label for="phone">' . __( 'Phone', 'text-domain' ) . '</label><span class="required">*</span><input class="uk-input uk-width-large uk-display-block" type="text" name="phone" id="phone"/></p>';
    }
    add_action( 'comment_form_logged_in_after', 'add_review_phone_field_on_comment_form' );
    add_action( 'comment_form_after_fields', 'add_review_phone_field_on_comment_form' );


    // Save phone number
    add_action( 'comment_post', 'save_comment_review_phone_field' );
    function save_comment_review_phone_field( $comment_id ){
        if( isset( $_POST['phone'] ) )
          update_comment_meta( $comment_id, 'phone', esc_attr( $_POST['phone'] ) );
    }

    function print_review_phone( $id ) {
        $val = get_comment_meta( $id, "phone", true );
        $title = $val ? '<strong class="review-phone">' . $val . '</strong>' : '';
        return $title;
    }

    // Print phone number - remove if not needed to show in front end
/*
    add_action('woocommerce_review_before_comment_meta', 'get_comment_phone' );
    function get_comment_phone($comment){
        echo print_review_phone($comment->comment_ID);
    }
*/

// Список в административной таблице

add_filter('manage_edit-comments_columns', 'my_add_comments_columns');

function my_add_comments_columns($my_cols) {

    $temp_columns = array(
        'phone' => 'Phone'
    );
    $my_cols = array_slice($my_cols, 0, 3, true) + $temp_columns + array_slice($my_cols, 3, NULL, true);

    return $my_cols;
}

add_action('manage_comments_custom_column', 'my_add_comment_columns_content', 10, 2);

function my_add_comment_columns_content($column, $comment_ID) {
    global $comment;
    switch ($column) :

        case 'phone' : {

                echo get_comment_meta($comment_ID, 'phone', true);
                break;
            }
    endswitch;
}

Проверено OK с WordPress 5.1 и WooCommerce 3.5.5

enter image description here

enter image description here

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

Вы должны вернуть переменную с именем 'fields' в конце функции.

function true_phone_number_field( $fields ) {
$fields['phone'] = '<p class="comment-form-phone"><label for="phone">Phone</label> <input id="phone" name="phone" type="text" value="" size="30" /></p>';

 return $fields;
}
add_filter( 'comment_form_default_fields', 'true_phone_number_field');
0 голосов
/ 27 февраля 2019

Ваш код должен создавать поле ввода, но может показаться, что это не так, поскольку используемый вами фильтр comment_form_default_fields предназначен для полей комментариев по умолчанию, которые скрыты, если вы вошли в систему. Телефонполе должно появиться после выхода из системы и просмотра комментариев к продукту.

Кроме того, вы не предоставили никакой логики для сохранения значения поля ввода в базе данных.Я думаю, эта статья может быть полезна, если вы хотите реализовать это самостоятельно.

Однако, поскольку вы пометили свой вопрос с помощью advanced-custom-fields, вы можете захотетьпропустите кодирование и позвольте плагину Advanced Custom Fields обрабатывать добавление поля ввода и сохранение номера телефона в базе данных.Для этого просто загрузите и активируйте плагин, перейдите в меню «Пользовательские поля», добавьте новую группу полей и создайте поле ввода телефона.Обязательно посмотрите мета-поле Location и создайте правило для отображения группы полей, только если Comment is equal to Product:

ACF Location meta box

Это автоматически добавит поля в вашей группе полей к полям комментариев продуктов.

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