'__return_true', 'default' => 0, 'show_in_rest' => true, 'single' => true, 'type' => 'number', ] ); register_post_meta( '', '_uf_disable_surveys', [ 'auth_callback' => '__return_true', 'default' => false, 'show_in_rest' => true, 'single' => true, 'type' => 'boolean', ] ); } public function meta_box_init() { $post_type = $this->get_current_post_type(); if (!is_post_type_viewable($post_type)) { return; } add_action('admin_enqueue_scripts', array($this, 'load_metabox_styles')); if ($this->is_gutenberg_editor() && $this->posttype_supports_gutenberg()) { return; } add_action('add_meta_boxes', [$this, 'create_meta_box']); } public function load_metabox_styles() { wp_register_style('userfeedback-admin-metabox-style', plugins_url('assets/css/uf-metabox.css', USERFEEDBACK_PLUGIN_FILE), array(), userfeedback_get_asset_version()); wp_enqueue_style('userfeedback-admin-metabox-style'); } private function posttype_supports_gutenberg() { return post_type_supports(userfeedback_get_current_post_type(), 'custom-fields'); } private function get_current_post_type() { global $post; if ($post && $post->post_type) { return $post->post_type; } global $typenow; if ($typenow) { return $typenow; } global $current_screen; if ($current_screen && $current_screen->post_type) { return $current_screen->post_type; } if (isset($_REQUEST['post_type'])) { return sanitize_key($_REQUEST['post_type']); } return null; } private function is_gutenberg_editor() { if (function_exists('is_gutenberg_page') && is_gutenberg_page()) { return true; } $current_screen = get_current_screen(); if (method_exists($current_screen, 'is_block_editor') && $current_screen->is_block_editor()) { return true; } return false; } public function create_meta_box() { add_meta_box( 'userfeedback-metabox', 'UserFeedback', [$this, 'print_metabox_html'], null, 'side', 'high' ); } public function save_custom_fields($current_post_id) { if (!isset($_POST['userfeedback_metabox_nonce']) || !wp_verify_nonce( wp_unslash( $_POST['userfeedback_metabox_nonce'] ), 'userfeedback_metabox')) { return; } if(isset($_POST['_uf_disable_surveys'])){ update_post_meta($current_post_id, '_uf_disable_surveys', sanitize_text_field( wp_unslash( $_POST['_uf_disable_surveys'] ) )); } else { update_post_meta($current_post_id, '_uf_disable_surveys', false); } if(isset($_POST['_uf_show_specific_survey'])){ update_post_meta($current_post_id, '_uf_show_specific_survey', sanitize_text_field( wp_unslash( $_POST['_uf_show_specific_survey'] ) )); } } public function print_metabox_html($post) { $disable_surveys = (bool) get_post_meta($post->ID, '_uf_disable_surveys', true); $specific_survey = get_post_meta($post->ID, '_uf_show_specific_survey', true); wp_nonce_field('userfeedback_metabox', 'userfeedback_metabox_nonce'); $addons = userfeedback_is_pro_version() ? userfeedback_get_parsed_addons() : []; $query = UserFeedback_Survey::where( array( array('status', '=', 'publish'), // Get only published and drafts by default ) )->with_count(array('responses')); $surveys_result = $query->get(); $survey_options = [ [ 'value' => 0, 'label' => __('None', 'userfeedback-lite'), ] ]; $surveys = array_map(function ($survey) { return array( 'value' => $survey->id, 'label' => $survey->title, ); }, $surveys_result); $survey_options = array_merge($survey_options, $surveys); ?>
active ) { ?>