
Liuer Box lets you build custom fields for WordPress with a visual field-group builder, while keeping data stored cleanly in native post/term/user meta and options.
liuer_box_options row. Your database stays small.liuer_option(), liuer_field(), liuer_term(), liuer_user(); write them with liuer_update_field(), liuer_update_term(), liuer_update_user(), liuer_update_option(); register groups in code with liuer_box_register().The getters return RAW values (use them for logic, arrays, attachment IDs and HTML fields). Always escape on output:
$accent = liuer_option( 'accent' ); // Options page value
$logo = liuer_field( 'logo', null, $post_id ); // Post meta value (attachment ID)
$color = liuer_term( 'color', $term_id ); // Term meta value
$phone = liuer_user( 'phone', $user_id ); // User meta value
echo esc_html( liuer_field( 'subtitle' ) );
echo wp_get_attachment_image( liuer_field( 'logo' ), 'large' );
foreach ( (array) liuer_field( 'slides' ) as $row ) {
echo esc_html( $row['title'] );
}
Setters mirror the getters and store in the same native format (arrays become one JSON row). They store the value AS GIVEN, so sanitize your input first:
liuer_update_field( 'subtitle', sanitize_text_field( $text ), $post_id ); // post meta
liuer_update_field( 'logo', absint( $attachment_id ) ); // current post
liuer_update_field( 'slides', array( // array -> JSON row
array( 'title' => 'One' ),
array( 'title' => 'Two' ),
), $post_id );
liuer_update_term( 'color', '#025098', $term_id ); // term meta
liuer_update_user( 'phone', $phone, $user_id ); // user meta
liuer_update_option( 'accent', '#2271b1' ); // options page
Optional convenience helpers that echo already-escaped output, so you don’t have to remember the right escaper:
liuer_e( 'subtitle' ); // echo esc_html() of a post field
liuer_attr_e( 'data_id' ); // echo esc_attr()
liuer_url_e( 'website' ); // echo esc_url()
liuer_img( 'logo', 'large' ); // echo a safe <img> from an attachment ID
liuer_wysiwyg( 'about' ); // echo with WordPress content filters
liuer_embed( 'map_embed' ); // echo sanitized iframe/embed HTML
liuer_option_e( 'tagline' ); // same family for options
liuer_option_attr_e( 'accent' );
liuer_option_url_e( 'fanpage' );
liuer_option_img( 'logo', 'medium' );
liuer_option_embed( 'map_embed' );