Как добавить настраиваемое поле в атрибут продукта woocommerce? - PullRequest
1 голос
/ 24 апреля 2020

Я хочу включить простую форму редактирования атрибута. (/wp-admin/edit.php?post_type=product&page=product_attributes&edit=55)

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

Я хочу добавить пользовательскую форму в свой продукт "Бренд" атрибут.

Вот что я попробовал (с и без параметра _):

add_action('pa_brand_edit_form_fields','msp_pa_brand_form_fields');
add_action('pa_brand_add_form_fields','msp_pa_brand_form_fields');

function msp_pa_brand_form_fields () {
?>
    <tr class="form-field">
            <th valign="top" scope="row">
                <label for="display"><?php _e('Display Type', ''); ?></label>
            </th>
            <td>
                <select name="display_type">
                    <option value="select">Select</option>
                    <option value="variation_image">Variation Image w/ label</option>
                </select>
            </td>
        </tr>
        <?php 
    }

Мне просто нужна помощь, чтобы получить html для отображения на этом экране редактирования. Мой общий план состоит в том, чтобы добавить этот тег выбора к каждому атрибуту, а затем добавить фрагмент кода в переменную. php проверить, как должен отображаться атрибут.

Любая помощь очень ценится.

1 Ответ

1 голос
/ 24 апреля 2020

С помощью следующих хуков вы можете добавить поле до или после , в зависимости от ваших пожеланий

https://github.com/woocommerce/woocommerce/blob/master/includes/admin/class-wc-admin-attributes.php#L200

function action_woocommerce_before_edit_attribute_fields(  ) {
    ?>
    <tr class="form-field">
        <th valign="top" scope="row">
            <label for="display"><?php _e('Display Type', ''); ?></label>
        </th>
        <td>
            <select name="display_type">
                <option value="select">Select</option>
                <option value="variation_image">Variation Image w/ label</option>
            </select>
        </td>
    </tr>
    <?php
}
add_action( 'woocommerce_before_edit_attribute_fields', 'action_woocommerce_before_edit_attribute_fields', 10, 0 ); 

function action_woocommerce_after_edit_attribute_fields(  ) {
    ?>
    <tr class="form-field">
        <th valign="top" scope="row">
            <label for="display"><?php _e('Display Type', ''); ?></label>
        </th>
        <td>
            <select name="display_type">
                <option value="select">Select</option>
                <option value="variation_image">Variation Image w/ label</option>
            </select>
        </td>
    </tr>
    <?php
}
add_action( 'woocommerce_after_edit_attribute_fields', 'action_woocommerce_after_edit_attribute_fields', 10, 0 );
...