![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/www/wp-content/themes/dt-the7/inc/extensions/meta-box/inc/fields/ |
<?php // Prevent loading this file directly defined( 'ABSPATH' ) || exit; // Make sure "select" field is loaded require_once THE7_RWMB_FIELDS_DIR . 'select-advanced.php'; if ( !class_exists( 'THE7_RWMB_Post_Field' ) ) { class THE7_RWMB_Post_Field { /** * Enqueue scripts and styles * * @return void */ static function admin_enqueue_scripts() { THE7_RWMB_Select_Advanced_Field::admin_enqueue_scripts(); } /** * Get field HTML * * @param string $html * @param mixed $meta * @param array $field * * @return string */ static function html( $html, $meta, $field ) { $field['options'] = self::get_options( $field ); switch ( $field['field_type'] ) { case 'select': return THE7_RWMB_Select_Field::html( $html, $meta, $field ); case 'select_advanced': default: return THE7_RWMB_Select_Advanced_Field::html( $html, $meta, $field ); } } /** * Normalize parameters for field * * @param array $field * * @return array */ static function normalize_field( $field ) { $default_post_type = __( 'Post', 'the7mk2' ); if ( is_string( $field['post_type'] ) ) { $post_type_object = get_post_type_object( $field['post_type'] ); $default_post_type = $post_type_object->labels->singular_name; } $field = wp_parse_args( $field, array( 'post_type' => 'post', 'field_type' => 'select_advanced', 'parent' => false, 'query_args' => array() ) ); $field['std'] = empty( $field['std'] ) ? sprintf( __( 'Select a %s', 'the7mk2' ), $default_post_type ) : $field['std']; if ( $field['parent'] ) { $field['multiple'] = false; $field['field_name'] = 'parent_id'; } $field['query_args'] = wp_parse_args( $field['query_args'], array( 'post_type' => $field['post_type'], 'post_status' => 'publish', 'posts_per_page' => '-1', 'cache_results' => false, 'update_post_meta_cache' => false, 'update_post_term_cache' => false, ) ); switch ( $field['field_type'] ) { case 'select': return THE7_RWMB_Select_Field::normalize_field( $field ); case 'select_advanced': default: return THE7_RWMB_Select_Advanced_Field::normalize_field( $field ); } } /** * Get meta value * If field is cloneable, value is saved as a single entry in DB * Otherwise value is saved as multiple entries (for backward compatibility) * * @see "save" method for better understanding * * @param $meta * @param $post_id * @param $saved * @param $field * * @return array */ static function meta( $meta, $post_id, $saved, $field ) { if ( isset( $field['parent'] ) && $field['parent'] ) { $post = get_post( $post_id ); return $post->post_parent; } return THE7_RWMB_Select_Field::meta( $meta, $post_id, $saved, $field ); } /** * Save meta value * If field is cloneable, value is saved as a single entry in DB * Otherwise value is saved as multiple entries (for backward compatibility) * * TODO: A good way to ALWAYS save values in single entry in DB, while maintaining backward compatibility * * @param $new * @param $old * @param $post_id * @param $field */ static function save( $new, $old, $post_id, $field ) { return THE7_RWMB_Select_Field::save( $new, $old, $post_id, $field ); } /** * Get posts * * @param array $field * * @return array */ static function get_options( $field ) { $results = get_posts( $field['query_args'] ); $options = array(); foreach ( $results as $result ) { $options[ $result->ID ] = apply_filters( 'the_title', $result->post_title, $result->ID ); } return $options; } } }