Astra_Target_Rules_Fields::generate_target_rule_selector( String $type, Array $selection_options, String $input_name, Array $saved_values, String $add_rule_label )
Generate markup for rendering the location selction.
Description
Parameters
- $type
-
(String) (Required) Rule type display|exclude.
- $selection_options
-
(Array) (Required) Array for available selection fields.
- $input_name
-
(String) (Required) Input name for the settings.
- $saved_values
-
(Array) (Required) Array of saved valued.
- $add_rule_label
-
(String) (Required) Label for the Add rule button.
Return
(HTML) Markup for for the location settings.
Source
File: classes/modules/target-rule/class-astra-target-rules-fields.php
public static function generate_target_rule_selector( $type, $selection_options, $input_name, $saved_values, $add_rule_label ) { $output = '<div class="target_rule-builder-wrap">'; if ( ! is_array( $saved_values ) || ( is_array( $saved_values ) && empty( $saved_values ) ) ) { $saved_values = array(); $saved_values['rule'][0] = ''; $saved_values['specific'][0] = ''; } $index = 0; foreach ( $saved_values['rule'] as $index => $data ) { $output .= '<div class="astra-target-rule-condition ast-target-rule-' . $index . '" data-rule="' . $index . '" >'; /* Condition Selection */ $output .= '<span class="target_rule-condition-delete dashicons dashicons-dismiss"></span>'; $output .= '<div class="target_rule-condition-wrap" >'; $output .= '<select name="' . esc_attr( $input_name ) . '[rule][' . $index . ']" class="target_rule-condition form-control ast-input">'; $output .= '<option value="">' . __( 'Select', 'astra-addon' ) . '</option>'; foreach ( $selection_options as $group => $group_data ) { $output .= '<optgroup label="' . $group_data['label'] . '">'; foreach ( $group_data['value'] as $opt_key => $opt_value ) { // specific rules. $selected = ''; if ( $data == $opt_key ) { $selected = 'selected="selected"'; } $output .= '<option value="' . $opt_key . '" ' . $selected . '>' . $opt_value . '</option>'; } $output .= '</optgroup>'; } $output .= '</select>'; $output .= '</div>'; $output .= '</div>'; /* Specific page selection */ $output .= '<div class="target_rule-specific-page-wrap" style="display:none">'; $output .= '<select name="' . esc_attr( $input_name ) . '[specific][]" class="target-rule-select2 target_rule-specific-page form-control ast-input " multiple="multiple">'; if ( 'specifics' == $data && isset( $saved_values['specific'] ) && null != $saved_values['specific'] && is_array( $saved_values['specific'] ) ) { foreach ( $saved_values['specific'] as $data_key => $sel_value ) { // posts. if ( strpos( $sel_value, 'post-' ) !== false ) { $post_id = (int) str_replace( 'post-', '', $sel_value ); $post_title = get_the_title( $post_id ); $output .= '<option value="post-' . $post_id . '" selected="selected" >' . $post_title . '</option>'; } // taxonomy options. if ( strpos( $sel_value, 'tax-' ) !== false ) { $tax_data = explode( '-', $sel_value ); $tax_id = (int) str_replace( 'tax-', '', $sel_value ); $term = get_term( $tax_id ); $term_name = ''; if ( ! is_wp_error( $term ) ) { $term_taxonomy = ucfirst( str_replace( '_', ' ', $term->taxonomy ) ); if ( isset( $tax_data[2] ) && 'single' === $tax_data[2] ) { $term_name = 'All singulars from ' . $term->name; } else { $term_name = $term->name . ' - ' . $term_taxonomy; } } $output .= '<option value="' . $sel_value . '" selected="selected" >' . $term_name . '</option>'; } } } $output .= '</select>'; $output .= '</div>'; } $output .= '</div>'; /* Add new rule */ $output .= '<div class="target_rule-add-rule-wrap">'; $output .= '<a href="#" class="button" data-rule-id="' . absint( $index ) . '" data-rule-type="' . $type . '">' . $add_rule_label . '</a>'; $output .= '</div>'; if ( 'display' == $type ) { /* Add new rule */ $output .= '<div class="target_rule-add-exclusion-rule">'; $output .= '<a href="#" class="button">' . __( 'Add Exclusion Rule', 'astra-addon' ) . '</a>'; $output .= '</div>'; } return $output; }
Expand full source code Collapse full source code View on Trac
Changelog
Version | Description |
---|---|
1.0.0 | Introduced. |