コード例 #1
0
 /**
  * Ger contribution settings for the product settings page
  *
  * @since 1.0.0
  * @return array
  */
 public function get_contribution_settings()
 {
     // Prepare contribution type options
     $contribution_types = wc_product_reviews_pro()->get_contribution_types();
     $contribution_type_options = array();
     foreach ($contribution_types as $type) {
         $contribution_type = wc_product_reviews_pro_get_contribution_type($type);
         $contribution_type_options[$type] = $contribution_type->get_title();
     }
     // Prepare contribution settings
     $contribution_settings = array(array('title' => __('Contributions types', WC_Product_Reviews_Pro::TEXT_DOMAIN), 'desc' => __('Select which contribution types to enable', WC_Product_Reviews_Pro::TEXT_DOMAIN), 'id' => 'wc_product_reviews_pro_enabled_contribution_types', 'default' => 'all', 'type' => 'select', 'class' => 'wc-enhanced-select chosen_select', 'css' => 'min-width: 350px;', 'desc_tip' => true, 'options' => array('all' => __('Enable all contribution types', WC_Product_Reviews_Pro::TEXT_DOMAIN), 'specific' => __('Enable specific contribution types only', WC_Product_Reviews_Pro::TEXT_DOMAIN))), array('title' => __('Specific contribution types', WC_Product_Reviews_Pro::TEXT_DOMAIN), 'desc' => '', 'id' => 'wc_product_reviews_pro_specific_enabled_contribution_types', 'class' => 'wc-enhanced-select chosen_select', 'css' => 'min-width: 350px;', 'default' => '', 'type' => 'multiselect', 'options' => $contribution_type_options), array('title' => __('Admin Badges', WC_Product_Reviews_Pro::TEXT_DOMAIN), 'type' => 'text', 'desc' => __('Leave blank to disable badges.', WC_Product_Reviews_Pro::TEXT_DOMAIN), 'desc_tip' => __('Enter the text to use on badges displayed on admin and shop manager contributions.', WC_Product_Reviews_Pro::TEXT_DOMAIN), 'id' => 'wc_product_reviews_pro_contribution_badge', 'default' => 'Admin'), array('title' => __('Sorting order', WC_Product_Reviews_Pro::TEXT_DOMAIN), 'desc' => __('Choose how contributions are sorted on product pages', WC_Product_Reviews_Pro::TEXT_DOMAIN), 'id' => 'wc_product_reviews_pro_contributions_orderby', 'default' => 'most_helpful', 'type' => 'select', 'class' => 'wc-enhanced-select chosen_select', 'css' => 'min-width: 350px;', 'desc_tip' => true, 'options' => array('most_helpful' => __('Most helpful first', WC_Product_Reviews_Pro::TEXT_DOMAIN), 'newest' => __('Newest first', WC_Product_Reviews_Pro::TEXT_DOMAIN))), array('title' => __('Minimum word count', WC_Product_Reviews_Pro::TEXT_DOMAIN), 'desc_tip' => __('Users need to enter at least this amount of words when posting a contribution', WC_Product_Reviews_Pro::TEXT_DOMAIN), 'type' => 'text', 'id' => 'wc_product_reviews_pro_min_word_count'), array('title' => __('Maximum word count', WC_Product_Reviews_Pro::TEXT_DOMAIN), 'desc_tip' => __('Maximum number of words users can enter when posting a contribution', WC_Product_Reviews_Pro::TEXT_DOMAIN), 'type' => 'text', 'id' => 'wc_product_reviews_pro_max_word_count'), array('title' => __('Moderation', WC_Product_Reviews_Pro::TEXT_DOMAIN), 'desc' => __('Contributions must be manually approved', WC_Product_Reviews_Pro::TEXT_DOMAIN), 'type' => 'checkbox', 'id' => 'wc_product_reviews_pro_contribution_moderation'));
     if (SV_WC_Plugin_Compatibility::is_wc_version_lt_2_3()) {
         $contribution_settings = array_merge(array(array('type' => 'sectionend', 'id' => 'product_data_options'), array('title' => __('Product Reviews', WC_Product_Reviews_Pro::TEXT_DOMAIN), 'type' => 'title', 'id' => 'product_contributions_options')), $contribution_settings);
     }
     return $contribution_settings;
 }
    /**
     * Render dropdowns for any filterable checkout add-ons
     *
     * @since 1.0
     */
    public function restrict_orders()
    {
        global $typenow;
        if ('shop_order' != $typenow) {
            return;
        }
        $javascript = '';
        foreach (wc_checkout_add_ons()->get_add_ons() as $add_on) {
            // if the add-on is filterable
            if ($add_on->is_filterable()) {
                if ($add_on->has_options()) {
                    // filterable multi item add-on field (select, multiselect, radio, checkbox), provide a dropdown
                    ?>
					<select name="<?php 
                    echo esc_attr($add_on->get_key());
                    ?>
" id="<?php 
                    echo esc_attr($add_on->get_key());
                    ?>
" class="wc-enhanced-select" data-placeholder="<?php 
                    echo __("Show all ", WC_Checkout_Add_Ons::TEXT_DOMAIN) . $add_on->name;
                    ?>
" data-allow_clear="true" style="min-width:200px;">
						<option value=""></option>
						<?php 
                    foreach ($add_on->get_options() as $option) {
                        if ('' === $option['value'] && '' === $option['label']) {
                            continue;
                        }
                        echo '<option value="' . $option['value'] . '" ' . (isset($_GET[$add_on->get_key()]) ? selected($option['value'], $_GET[$add_on->get_key()]) : '') . '>' . __($option['label'], WC_Checkout_Add_Ons::TEXT_DOMAIN) . '</option>';
                    }
                    ?>
					</select>
					<?php 
                    $javascript .= SV_WC_Plugin_Compatibility::is_wc_version_lt_2_3() ? "if ( \$().chosen ) { \$('select#" . $add_on->get_key() . "').chosen( {  allow_single_deselect: true  } ); }" : "";
                } elseif ($add_on->type == 'text') {
                    if (SV_WC_Plugin_Compatibility::is_wc_version_gte_2_3()) {
                        ?>
						<input type="hidden" class="sv-wc-enhanced-search" name="<?php 
                        echo esc_attr($add_on->get_key());
                        ?>
" style="min-width:200px;"
							data-placeholder="<?php 
                        echo __("Show all ", WC_Checkout_Add_Ons::TEXT_DOMAIN) . $add_on->label;
                        ?>
"
							data-selected="<?php 
                        echo empty($_GET[$add_on->get_key()]) ? '' : $_GET[$add_on->get_key()];
                        ?>
"
							value="<?php 
                        echo empty($_GET[$add_on->get_key()]) ? '' : esc_attr($_GET[$add_on->get_key()]);
                        ?>
"
							data-allow_clear="true"
							data-action="wc_checkout_add_ons_json_search_field"
							data-nonce="<?php 
                        echo wp_create_nonce('search-field');
                        ?>
"
							data-request_data = "<?php 
                        echo esc_attr(json_encode(array('add_on_id' => $add_on->id, 'default' => addslashes(__('Show all ', WC_Checkout_Add_Ons::TEXT_DOMAIN) . $add_on->name))));
                        ?>
"
							/>
						<?php 
                        SV_WC_Helper::render_select2_ajax();
                    } else {
                        // search box dropdown
                        ?>
						<select id="<?php 
                        echo esc_attr($add_on->get_key());
                        ?>
" name="<?php 
                        echo esc_attr($add_on->get_key());
                        ?>
" data-placeholder="<?php 
                        echo __("Show all ", WC_Checkout_Add_Ons::TEXT_DOMAIN) . $add_on->name;
                        ?>
" data-allow_clear="true" style="min-width:200px;">
							<option value=""></option>
							<?php 
                        if (!empty($_GET[$add_on->get_key()])) {
                            echo '<option value="' . esc_attr($_GET[$add_on->get_key()]) . '" ';
                            selected(1, 1);
                            echo '>' . $_GET[$add_on->get_key()] . '</option>';
                        }
                        ?>
						</select>
						<?php 
                        $javascript .= "\n\t\t\t\t\t\t\t\$( 'select#" . $add_on->get_key() . "' ).ajaxChosen( {\n\t\t\t\t\t\t\t\tmethod:         'GET',\n\t\t\t\t\t\t\t\turl:            '" . admin_url('admin-ajax.php') . "',\n\t\t\t\t\t\t\t\tdataType:       'json',\n\t\t\t\t\t\t\t\tafterTypeDelay: '100',\n\t\t\t\t\t\t\t\tminTermLength:  1,\n\t\t\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\t\t\taction:     'wc_checkout_add_ons_json_search_field',\n\t\t\t\t\t\t\t\t\tsecurity:   '" . wp_create_nonce("search-field") . "',\n\t\t\t\t\t\t\t\t\trequest_data: { 'add_on_id' : '" . $add_on->id . "', 'default' : '" . addslashes(__('Show all ', WC_Checkout_Add_Ons::TEXT_DOMAIN) . $add_on->name) . "' },\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}, function ( data ) {\n\n\t\t\t\t\t\t\t\tvar terms = {};\n\n\t\t\t\t\t\t\t\t\$.each( data, function ( i, val ) {\n\t\t\t\t\t\t\t\t\tterms[ i ] = val;\n\t\t\t\t\t\t\t\t} );\n\n\t\t\t\t\t\t\t\treturn terms;\n\t\t\t\t\t\t\t}, {  allow_single_deselect: true } );";
                    }
                } elseif ($add_on->type == 'checkbox' || $add_on->type == 'file') {
                    $checked = isset($_GET[$add_on->get_key()]) && $_GET[$add_on->get_key()];
                    ?>
					<label class="wc-checkout-add-on-checkbox-filter">
						<input type="checkbox" id="<?php 
                    echo esc_attr($add_on->get_key());
                    ?>
" name="<?php 
                    echo esc_attr($add_on->get_key());
                    ?>
" value="1" <?php 
                    checked($checked);
                    ?>
>
						<?php 
                    echo $add_on->name;
                    ?>
					</label>
					<?php 
                }
            }
        }
        // filterable dropdown javascript
        wc_enqueue_js($javascript);
    }
    /**
     * Render dropdowns for any filterable custom order fields
     *
     * @since 1.0
     */
    public function restrict_orders()
    {
        global $typenow;
        if ('shop_order' != $typenow) {
            return;
        }
        $javascript = '';
        foreach (wc_admin_custom_order_fields()->get_order_fields() as $order_field) {
            // if the field is filterable
            if ($order_field->is_filterable()) {
                if ($order_field->type == 'date') {
                    // filterable date field: provide a monthly dropdown
                    $this->render_months_dropdown($order_field->label, $order_field->get_meta_key());
                    $javascript .= "if ( ! \$().select2 && \$().chosen ) { \$( 'select#" . $order_field->get_meta_key() . "' ).chosen( { allow_single_deselect: true } ); }";
                } elseif ($order_field->has_options()) {
                    // filterable multi item field (select, multiselect, radio, checkbox), provide a dropdown
                    ?>
					<select name="<?php 
                    echo esc_attr($order_field->get_meta_key());
                    ?>
" id="<?php 
                    echo esc_attr($order_field->get_meta_key());
                    ?>
" class="wc-enhanced-select" data-placeholder="<?php 
                    echo __("Show all ", 'wc_admin_custom_order_fields') . $order_field->label;
                    ?>
" data-allow_clear="true" style="min-width:200px;">
						<option value=""></option>
						<?php 
                    foreach ($order_field->get_options() as $option) {
                        if ('' === $option['value'] && '' === $option['label']) {
                            continue;
                        }
                        echo '<option value="' . $option['value'] . '" ' . (isset($_GET[$order_field->get_meta_key()]) ? selected($option['value'], $_GET[$order_field->get_meta_key()]) : '') . '>' . __($option['label'], 'wc_admin_custom_order_fields') . '</option>';
                    }
                    ?>
					</select>
					<?php 
                    $javascript .= SV_WC_Plugin_Compatibility::is_wc_version_lt_2_3() ? "if ( ! \$().select2 && \$().chosen ) { \$('select#" . $order_field->get_meta_key() . "').chosen( { allow_single_deselect: true } ); }" : "";
                } elseif ($order_field->type == 'text') {
                    if (SV_WC_Plugin_Compatibility::is_wc_version_gte_2_3()) {
                        ?>
						<input type="hidden" class="sv-wc-enhanced-search" name="<?php 
                        echo esc_attr($order_field->get_meta_key());
                        ?>
" style="min-width:200px;"
							data-placeholder="<?php 
                        echo __('Show all ', 'wc_admin_custom_order_fields') . $order_field->label;
                        ?>
"
							data-selected="<?php 
                        echo empty($_GET[$order_field->get_meta_key()]) ? '' : $_GET[$order_field->get_meta_key()];
                        ?>
"
							value="<?php 
                        echo empty($_GET[$order_field->get_meta_key()]) ? '' : esc_attr($_GET[$order_field->get_meta_key()]);
                        ?>
"
							data-allow_clear="true"
							data-action="wc_admin_custom_order_fields_json_search_field"
							data-nonce="<?php 
                        echo wp_create_nonce('search-field');
                        ?>
"
							data-request_data = "<?php 
                        echo esc_attr(json_encode(array('field_name' => $order_field->get_meta_key(), 'default' => __('Show all ', 'wc_admin_custom_order_fields') . $order_field->label)));
                        ?>
"
							/>
						<?php 
                        SV_WC_Helper::render_select2_ajax();
                    } else {
                        // search box dropdown
                        ?>
						<select id="<?php 
                        echo esc_attr($order_field->get_meta_key());
                        ?>
" name="<?php 
                        echo esc_attr($order_field->get_meta_key());
                        ?>
" data-placeholder="<?php 
                        echo __('Show all ', 'wc_admin_custom_order_fields') . $order_field->label;
                        ?>
" data-allow_clear="true" style="min-width:200px;">
							<option value=""></option>
							<?php 
                        if (!empty($_GET[$order_field->get_meta_key()])) {
                            echo '<option value="' . esc_attr($_GET[$order_field->get_meta_key()]) . '" ';
                            selected(1, 1);
                            echo '>' . $_GET[$order_field->get_meta_key()] . '</option>';
                        }
                        ?>
						</select>
						<?php 
                        $javascript .= "\n\t\t\t\t\t\tif ( \$().ajaxChosen ) {\n\t\t\t\t\t\t\t\$( 'select#" . $order_field->get_meta_key() . "' ).ajaxChosen( {\n\t\t\t\t\t\t\t\tmethod:         'GET',\n\t\t\t\t\t\t\t\turl:            '" . admin_url('admin-ajax.php') . "',\n\t\t\t\t\t\t\t\tdataType:       'json',\n\t\t\t\t\t\t\t\tafterTypeDelay: '100',\n\t\t\t\t\t\t\t\tminTermLength:  1,\n\t\t\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\t\t\trequest_data: { 'field_name' : '" . $order_field->get_meta_key() . "', 'default' : '" . __('Show all ' . $order_field->label, 'wc_admin_custom_order_fields') . "' },\n\t\t\t\t\t\t\t\t\taction:       'wc_admin_custom_order_fields_json_search_field',\n\t\t\t\t\t\t\t\t\tsecurity:     '" . wp_create_nonce("search-field") . "',\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}, function ( data ) {\n\n\t\t\t\t\t\t\t\tvar terms = {};\n\n\t\t\t\t\t\t\t\t\$.each( data, function ( i, val ) {\n\t\t\t\t\t\t\t\t\tterms[ i ] = val;\n\t\t\t\t\t\t\t\t} );\n\n\t\t\t\t\t\t\t\treturn terms;\n\t\t\t\t\t\t\t}, {\n\t\t\t\t\t\t\t\tallow_single_deselect: true\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t\t";
                    }
                }
            }
        }
        // filterable dropdown javascript
        wc_enqueue_js($javascript);
    }