| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284 |
- <?php
- /**
- * WooCommerce Meta Box Functions
- *
- * @author WooThemes
- * @category Core
- * @package WooCommerce/Admin/Functions
- * @version 2.3.0
- */
- if ( ! defined( 'ABSPATH' ) ) {
- exit; // Exit if accessed directly
- }
- /**
- * Output a text input box.
- *
- * @param array $field
- */
- function woocommerce_wp_text_input( $field ) {
- global $thepostid, $post;
- $thepostid = empty( $thepostid ) ? $post->ID : $thepostid;
- $field['placeholder'] = isset( $field['placeholder'] ) ? $field['placeholder'] : '';
- $field['class'] = isset( $field['class'] ) ? $field['class'] : 'short';
- $field['style'] = isset( $field['style'] ) ? $field['style'] : '';
- $field['wrapper_class'] = isset( $field['wrapper_class'] ) ? $field['wrapper_class'] : '';
- $field['value'] = isset( $field['value'] ) ? $field['value'] : get_post_meta( $thepostid, $field['id'], true );
- $field['name'] = isset( $field['name'] ) ? $field['name'] : $field['id'];
- $field['type'] = isset( $field['type'] ) ? $field['type'] : 'text';
- $field['desc_tip'] = isset( $field['desc_tip'] ) ? $field['desc_tip'] : false;
- $data_type = empty( $field['data_type'] ) ? '' : $field['data_type'];
- switch ( $data_type ) {
- case 'price':
- $field['class'] .= ' wc_input_price';
- $field['value'] = wc_format_localized_price( $field['value'] );
- break;
- case 'decimal':
- $field['class'] .= ' wc_input_decimal';
- $field['value'] = wc_format_localized_decimal( $field['value'] );
- break;
- case 'stock':
- $field['class'] .= ' wc_input_stock';
- $field['value'] = wc_stock_amount( $field['value'] );
- break;
- case 'url':
- $field['class'] .= ' wc_input_url';
- $field['value'] = esc_url( $field['value'] );
- break;
- default:
- break;
- }
- // Custom attribute handling
- $custom_attributes = array();
- if ( ! empty( $field['custom_attributes'] ) && is_array( $field['custom_attributes'] ) ) {
- foreach ( $field['custom_attributes'] as $attribute => $value ) {
- $custom_attributes[] = esc_attr( $attribute ) . '="' . esc_attr( $value ) . '"';
- }
- }
- echo '<p class="form-field ' . esc_attr( $field['id'] ) . '_field ' . esc_attr( $field['wrapper_class'] ) . '">
- <label for="' . esc_attr( $field['id'] ) . '">' . wp_kses_post( $field['label'] ) . '</label>';
- if ( ! empty( $field['description'] ) && false !== $field['desc_tip'] ) {
- echo wc_help_tip( $field['description'] );
- }
- echo '<input type="' . esc_attr( $field['type'] ) . '" class="' . esc_attr( $field['class'] ) . '" style="' . esc_attr( $field['style'] ) . '" name="' . esc_attr( $field['name'] ) . '" id="' . esc_attr( $field['id'] ) . '" value="' . esc_attr( $field['value'] ) . '" placeholder="' . esc_attr( $field['placeholder'] ) . '" ' . implode( ' ', $custom_attributes ) . ' /> ';
- if ( ! empty( $field['description'] ) && false === $field['desc_tip'] ) {
- echo '<span class="description">' . wp_kses_post( $field['description'] ) . '</span>';
- }
- echo '</p>';
- }
- /**
- * Output a hidden input box.
- *
- * @param array $field
- */
- function woocommerce_wp_hidden_input( $field ) {
- global $thepostid, $post;
- $thepostid = empty( $thepostid ) ? $post->ID : $thepostid;
- $field['value'] = isset( $field['value'] ) ? $field['value'] : get_post_meta( $thepostid, $field['id'], true );
- $field['class'] = isset( $field['class'] ) ? $field['class'] : '';
- echo '<input type="hidden" class="' . esc_attr( $field['class'] ) . '" name="' . esc_attr( $field['id'] ) . '" id="' . esc_attr( $field['id'] ) . '" value="' . esc_attr( $field['value'] ) . '" /> ';
- }
- /**
- * Output a textarea input box.
- *
- * @param array $field
- */
- function woocommerce_wp_textarea_input( $field ) {
- global $thepostid, $post;
- $thepostid = empty( $thepostid ) ? $post->ID : $thepostid;
- $field['placeholder'] = isset( $field['placeholder'] ) ? $field['placeholder'] : '';
- $field['class'] = isset( $field['class'] ) ? $field['class'] : 'short';
- $field['style'] = isset( $field['style'] ) ? $field['style'] : '';
- $field['wrapper_class'] = isset( $field['wrapper_class'] ) ? $field['wrapper_class'] : '';
- $field['value'] = isset( $field['value'] ) ? $field['value'] : get_post_meta( $thepostid, $field['id'], true );
- $field['desc_tip'] = isset( $field['desc_tip'] ) ? $field['desc_tip'] : false;
- $field['name'] = isset( $field['name'] ) ? $field['name'] : $field['id'];
- $field['rows'] = isset( $field['rows'] ) ? $field['rows'] : 2;
- $field['cols'] = isset( $field['cols'] ) ? $field['cols'] : 20;
- // Custom attribute handling
- $custom_attributes = array();
- if ( ! empty( $field['custom_attributes'] ) && is_array( $field['custom_attributes'] ) ) {
- foreach ( $field['custom_attributes'] as $attribute => $value ) {
- $custom_attributes[] = esc_attr( $attribute ) . '="' . esc_attr( $value ) . '"';
- }
- }
- echo '<p class="form-field ' . esc_attr( $field['id'] ) . '_field ' . esc_attr( $field['wrapper_class'] ) . '">
- <label for="' . esc_attr( $field['id'] ) . '">' . wp_kses_post( $field['label'] ) . '</label>';
- if ( ! empty( $field['description'] ) && false !== $field['desc_tip'] ) {
- echo wc_help_tip( $field['description'] );
- }
- echo '<textarea class="' . esc_attr( $field['class'] ) . '" style="' . esc_attr( $field['style'] ) . '" name="' . esc_attr( $field['name'] ) . '" id="' . esc_attr( $field['id'] ) . '" placeholder="' . esc_attr( $field['placeholder'] ) . '" rows="' . esc_attr( $field['rows'] ) . '" cols="' . esc_attr( $field['cols'] ) . '" ' . implode( ' ', $custom_attributes ) . '>' . esc_textarea( $field['value'] ) . '</textarea> ';
- if ( ! empty( $field['description'] ) && false === $field['desc_tip'] ) {
- echo '<span class="description">' . wp_kses_post( $field['description'] ) . '</span>';
- }
- echo '</p>';
- }
- /**
- * Output a checkbox input box.
- *
- * @param array $field
- */
- function woocommerce_wp_checkbox( $field ) {
- global $thepostid, $post;
- $thepostid = empty( $thepostid ) ? $post->ID : $thepostid;
- $field['class'] = isset( $field['class'] ) ? $field['class'] : 'checkbox';
- $field['style'] = isset( $field['style'] ) ? $field['style'] : '';
- $field['wrapper_class'] = isset( $field['wrapper_class'] ) ? $field['wrapper_class'] : '';
- $field['value'] = isset( $field['value'] ) ? $field['value'] : get_post_meta( $thepostid, $field['id'], true );
- $field['cbvalue'] = isset( $field['cbvalue'] ) ? $field['cbvalue'] : 'yes';
- $field['name'] = isset( $field['name'] ) ? $field['name'] : $field['id'];
- $field['desc_tip'] = isset( $field['desc_tip'] ) ? $field['desc_tip'] : false;
- // Custom attribute handling
- $custom_attributes = array();
- if ( ! empty( $field['custom_attributes'] ) && is_array( $field['custom_attributes'] ) ) {
- foreach ( $field['custom_attributes'] as $attribute => $value ) {
- $custom_attributes[] = esc_attr( $attribute ) . '="' . esc_attr( $value ) . '"';
- }
- }
- echo '<p class="form-field ' . esc_attr( $field['id'] ) . '_field ' . esc_attr( $field['wrapper_class'] ) . '">
- <label for="' . esc_attr( $field['id'] ) . '">' . wp_kses_post( $field['label'] ) . '</label>';
- if ( ! empty( $field['description'] ) && false !== $field['desc_tip'] ) {
- echo wc_help_tip( $field['description'] );
- }
- echo '<input type="checkbox" class="' . esc_attr( $field['class'] ) . '" style="' . esc_attr( $field['style'] ) . '" name="' . esc_attr( $field['name'] ) . '" id="' . esc_attr( $field['id'] ) . '" value="' . esc_attr( $field['cbvalue'] ) . '" ' . checked( $field['value'], $field['cbvalue'], false ) . ' ' . implode( ' ', $custom_attributes ) . '/> ';
- if ( ! empty( $field['description'] ) && false === $field['desc_tip'] ) {
- echo '<span class="description">' . wp_kses_post( $field['description'] ) . '</span>';
- }
- echo '</p>';
- }
- /**
- * Output a select input box.
- *
- * @param array $field Data about the field to render.
- */
- function woocommerce_wp_select( $field ) {
- global $thepostid, $post;
- $thepostid = empty( $thepostid ) ? $post->ID : $thepostid;
- $field = wp_parse_args(
- $field, array(
- 'class' => 'select short',
- 'style' => '',
- 'wrapper_class' => '',
- 'value' => get_post_meta( $thepostid, $field['id'], true ),
- 'name' => $field['id'],
- 'desc_tip' => false,
- 'custom_attributes' => array(),
- )
- );
- $wrapper_attributes = array(
- 'class' => $field['wrapper_class'] . " form-field {$field['id']}_field",
- );
- $label_attributes = array(
- 'for' => $field['id'],
- );
- $field_attributes = (array) $field['custom_attributes'];
- $field_attributes['style'] = $field['style'];
- $field_attributes['id'] = $field['id'];
- $field_attributes['name'] = $field['name'];
- $field_attributes['class'] = $field['class'];
- $tooltip = ! empty( $field['description'] ) && false !== $field['desc_tip'] ? $field['description'] : '';
- $description = ! empty( $field['description'] ) && false === $field['desc_tip'] ? $field['description'] : '';
- ?>
- <p <?php echo wc_implode_html_attributes( $wrapper_attributes ); // WPCS: XSS ok. ?>>
- <label <?php echo wc_implode_html_attributes( $label_attributes ); // WPCS: XSS ok. ?>><?php echo wp_kses_post( $field['label'] ); ?></label>
- <?php if ( $tooltip ) : ?>
- <?php echo wc_help_tip( $tooltip ); // WPCS: XSS ok. ?>
- <?php endif; ?>
- <select <?php echo wc_implode_html_attributes( $field_attributes ); // WPCS: XSS ok. ?>>
- <?php
- foreach ( $field['options'] as $key => $value ) {
- echo '<option value="' . esc_attr( $key ) . '"' . wc_selected( $key, $field['value'] ) . '>' . esc_html( $value ) . '</option>';
- }
- ?>
- </select>
- <?php if ( $description ) : ?>
- <span class="description"><?php echo wp_kses_post( $description ); ?></span>
- <?php endif; ?>
- </p>
- <?php
- }
- /**
- * Output a radio input box.
- *
- * @param array $field
- */
- function woocommerce_wp_radio( $field ) {
- global $thepostid, $post;
- $thepostid = empty( $thepostid ) ? $post->ID : $thepostid;
- $field['class'] = isset( $field['class'] ) ? $field['class'] : 'select short';
- $field['style'] = isset( $field['style'] ) ? $field['style'] : '';
- $field['wrapper_class'] = isset( $field['wrapper_class'] ) ? $field['wrapper_class'] : '';
- $field['value'] = isset( $field['value'] ) ? $field['value'] : get_post_meta( $thepostid, $field['id'], true );
- $field['name'] = isset( $field['name'] ) ? $field['name'] : $field['id'];
- $field['desc_tip'] = isset( $field['desc_tip'] ) ? $field['desc_tip'] : false;
- echo '<fieldset class="form-field ' . esc_attr( $field['id'] ) . '_field ' . esc_attr( $field['wrapper_class'] ) . '"><legend>' . wp_kses_post( $field['label'] ) . '</legend>';
- if ( ! empty( $field['description'] ) && false !== $field['desc_tip'] ) {
- echo wc_help_tip( $field['description'] );
- }
- echo '<ul class="wc-radios">';
- foreach ( $field['options'] as $key => $value ) {
- echo '<li><label><input
- name="' . esc_attr( $field['name'] ) . '"
- value="' . esc_attr( $key ) . '"
- type="radio"
- class="' . esc_attr( $field['class'] ) . '"
- style="' . esc_attr( $field['style'] ) . '"
- ' . checked( esc_attr( $field['value'] ), esc_attr( $key ), false ) . '
- /> ' . esc_html( $value ) . '</label>
- </li>';
- }
- echo '</ul>';
- if ( ! empty( $field['description'] ) && false === $field['desc_tip'] ) {
- echo '<span class="description">' . wp_kses_post( $field['description'] ) . '</span>';
- }
- echo '</fieldset>';
- }
|