<?php defined( 'ABSPATH' ) || die; /** * The background field. */ class RWMB_Background_Field extends RWMB_Field { public static function admin_enqueue_scripts() { wp_enqueue_style( 'rwmb-background', RWMB_CSS_URL . 'background.css', [], RWMB_VER ); wp_style_add_data( 'rwmb-background', 'path', RWMB_CSS_DIR . 'background.css' ); $args = func_get_args(); $field = reset( $args ); $color = RWMB_Color_Field::normalize( [ 'type' => 'color', 'id' => "{$field['id']}_color", 'field_name' => "{$field['field_name']}[color]", 'alpha_channel' => true, ] ); RWMB_Color_Field::admin_enqueue_scripts( $color ); RWMB_File_Input_Field::admin_enqueue_scripts(); } /** * Get field HTML. * * @param mixed $meta Meta value. * @param array $field Field settings. * * @return string */ public static function html( $meta, $field ) { $meta = wp_parse_args( $meta, [ 'color' => '', 'image' => '', 'repeat' => '', 'attachment' => '', 'position' => '', 'size' => '', ] ); $output = '<div class="rwmb-background-row">'; // Color. $color = RWMB_Color_Field::normalize( [ 'type' => 'color', 'id' => "{$field['id']}_color", 'field_name' => "{$field['field_name']}[color]", 'alpha_channel' => true, ] ); $output .= RWMB_Color_Field::html( $meta['color'], $color ); $output .= '</div><!-- .rwmb-background-row -->'; $output .= '<div class="rwmb-background-row">'; // Image. $image = RWMB_File_Input_Field::normalize( [ 'type' => 'file_input', 'id' => "{$field['id']}_image", 'field_name' => "{$field['field_name']}[image]", 'placeholder' => __( 'Background Image', 'meta-box' ), ] ); $output .= RWMB_File_Input_Field::html( $meta['image'], $image ); $output .= '</div><!-- .rwmb-background-row -->'; $output .= '<div class="rwmb-background-row">'; // Repeat. $repeat = RWMB_Select_Field::normalize( [ 'type' => 'select', 'id' => "{$field['id']}_repeat", 'field_name' => "{$field['field_name']}[repeat]", 'placeholder' => esc_html__( '-- Repeat --', 'meta-box' ), 'options' => [ 'no-repeat' => esc_html__( 'No Repeat', 'meta-box' ), 'repeat' => esc_html__( 'Repeat All', 'meta-box' ), 'repeat-x' => esc_html__( 'Repeat Horizontally', 'meta-box' ), 'repeat-y' => esc_html__( 'Repeat Vertically', 'meta-box' ), 'inherit' => esc_html__( 'Inherit', 'meta-box' ), ], ] ); $output .= RWMB_Select_Field::html( $meta['repeat'], $repeat ); // Position. $position = RWMB_Select_Field::normalize( [ 'type' => 'select', 'id' => "{$field['id']}_position", 'field_name' => "{$field['field_name']}[position]", 'placeholder' => esc_html__( '-- Position --', 'meta-box' ), 'options' => [ 'top left' => esc_html__( 'Top Left', 'meta-box' ), 'top center' => esc_html__( 'Top Center', 'meta-box' ), 'top right' => esc_html__( 'Top Right', 'meta-box' ), 'center left' => esc_html__( 'Center Left', 'meta-box' ), 'center center' => esc_html__( 'Center Center', 'meta-box' ), 'center right' => esc_html__( 'Center Right', 'meta-box' ), 'bottom left' => esc_html__( 'Bottom Left', 'meta-box' ), 'bottom center' => esc_html__( 'Bottom Center', 'meta-box' ), 'bottom right' => esc_html__( 'Bottom Right', 'meta-box' ), ], ] ); $output .= RWMB_Select_Field::html( $meta['position'], $position ); // Attachment. $attachment = RWMB_Select_Field::normalize( [ 'type' => 'select', 'id' => "{$field['id']}_attachment", 'field_name' => "{$field['field_name']}[attachment]", 'placeholder' => esc_html__( '-- Attachment --', 'meta-box' ), 'options' => [ 'fixed' => esc_html__( 'Fixed', 'meta-box' ), 'scroll' => esc_html__( 'Scroll', 'meta-box' ), 'inherit' => esc_html__( 'Inherit', 'meta-box' ), ], ] ); $output .= RWMB_Select_Field::html( $meta['attachment'], $attachment ); // Size. $size = RWMB_Select_Field::normalize( [ 'type' => 'select', 'id' => "{$field['id']}_size", 'field_name' => "{$field['field_name']}[size]", 'placeholder' => esc_html__( '-- Size --', 'meta-box' ), 'options' => [ 'inherit' => esc_html__( 'Inherit', 'meta-box' ), 'cover' => esc_html__( 'Cover', 'meta-box' ), 'contain' => esc_html__( 'Contain', 'meta-box' ), ], ] ); $output .= RWMB_Select_Field::html( $meta['size'], $size ); $output .= '</div><!-- .rwmb-background-row -->'; return $output; } /** * Format a single value for the helper functions. Sub-fields should overwrite this method if necessary. * * @param array $field Field parameters. * @param array $value The value. * @param array $args Additional arguments. Rarely used. See specific fields for details. * @param int|null $post_id Post ID. null for current post. Optional. * * @return string */ public static function format_single_value( $field, $value, $args, $post_id ) { if ( empty( $value ) ) { return ''; } $output = ''; $value = array_filter( $value ); foreach ( $value as $key => $subvalue ) { $subvalue = 'image' === $key ? 'url(' . esc_url( $subvalue ) . ')' : $subvalue; $output .= 'background-' . $key . ': ' . $subvalue . ';'; } return $output; } }
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
autocomplete.php | File | 2.94 KB | 0644 |
|
background.php | File | 5.32 KB | 0644 |
|
button-group.php | File | 1.84 KB | 0644 |
|
button.php | File | 1.26 KB | 0644 |
|
checkbox-list.php | File | 468 B | 0644 |
|
checkbox.php | File | 1.25 KB | 0644 |
|
choice.php | File | 1.84 KB | 0644 |
|
color.php | File | 2.48 KB | 0644 |
|
custom-html.php | File | 602 B | 0644 |
|
date.php | File | 611 B | 0644 |
|
datetime.php | File | 9.83 KB | 0644 |
|
divider.php | File | 609 B | 0644 |
|
fieldset-text.php | File | 3.36 KB | 0644 |
|
file-input.php | File | 1.93 KB | 0644 |
|
file-upload.php | File | 1.09 KB | 0644 |
|
file.php | File | 15.39 KB | 0644 |
|
heading.php | File | 678 B | 0644 |
|
icon.php | File | 8.4 KB | 0644 |
|
image-advanced.php | File | 2.35 KB | 0644 |
|
image-select.php | File | 2.32 KB | 0644 |
|
image-upload.php | File | 880 B | 0644 |
|
image.php | File | 4.78 KB | 0644 |
|
input-list.php | File | 2.62 KB | 0644 |
|
input.php | File | 2.95 KB | 0644 |
|
key-value.php | File | 2.86 KB | 0644 |
|
map.php | File | 6.36 KB | 0644 |
|
media.php | File | 6.85 KB | 0644 |
|
multiple-values.php | File | 1.33 KB | 0644 |
|
number.php | File | 910 B | 0644 |
|
object-choice.php | File | 4.37 KB | 0644 |
|
oembed.php | File | 4.05 KB | 0644 |
|
osm.php | File | 5.11 KB | 0644 |
|
password.php | File | 537 B | 0644 |
|
post.php | File | 7.18 KB | 0644 |
|
radio.php | File | 270 B | 0644 |
|
range.php | File | 1.51 KB | 0644 |
|
select-advanced.php | File | 2.39 KB | 0644 |
|
select-tree.php | File | 1.51 KB | 0644 |
|
select.php | File | 2.49 KB | 0644 |
|
sidebar.php | File | 1.22 KB | 0644 |
|
single-image.php | File | 1.73 KB | 0644 |
|
slider.php | File | 2.28 KB | 0644 |
|
switch.php | File | 2.32 KB | 0644 |
|
taxonomy-advanced.php | File | 2.84 KB | 0644 |
|
taxonomy.php | File | 9.08 KB | 0644 |
|
text-list.php | File | 3.36 KB | 0644 |
|
textarea.php | File | 1.57 KB | 0644 |
|
time.php | File | 938 B | 0644 |
|
user.php | File | 5.03 KB | 0644 |
|
video.php | File | 3.94 KB | 0644 |
|
wysiwyg.php | File | 2.28 KB | 0644 |
|