Skip to content

Instantly share code, notes, and snippets.

@drrobotnik
Created December 5, 2014 00:23
Show Gist options
  • Save drrobotnik/ba459c656dde8fa57e89 to your computer and use it in GitHub Desktop.
Save drrobotnik/ba459c656dde8fa57e89 to your computer and use it in GitHub Desktop.
function tt_widget_visibility_js() { ?>
<script>
jQuery(function($) {
$( document ).on( 'change.widgetconditions', 'select.conditions-rule-major', function() {
var $conditionsRuleMajor = $ ( this );
var $conditionsRuleMinor = $conditionsRuleMajor.siblings( 'select.conditions-rule-minor:first' );
var $conditionsRuleQueryVars = $conditionsRuleMajor.siblings( 'input.conditions-rule-query-var' );
console.log($conditionsRuleMajor.val());
console.log($conditionsRuleMinor);
if ( $conditionsRuleMajor.val() == 'query_vars' ) {
$conditionsRuleMinor.hide();
$conditionsRuleQueryVars.show();
}else{
$conditionsRuleMinor.show();
$conditionsRuleQueryVars.hide();
}
});
});
</script><?php
}
function tt_widget_visibility_minor_visible( $default, $rule ) {
if ( 'query_vars' == $rule['major'] ) {
return false;
}
return true;
}
function tt_widget_visibility_condition_major( $rule ) { ?>
<option value="query_vars" <?php selected( "query_vars", $rule['major'] ); ?>><?php esc_html_e( 'Query Vars', 'jetpack' ); ?></option>
<?php }
function tt_widget_visibility_conditions( $conditions ) {
return array( 'major' => '', 'minor' => '', 'query_var_key' => '', 'query_var_value' => '' );
}
function tt_widget_visibility_additional_fields( $rule ) {
?><input class="conditions-rule-query-var small-text<?php if ( ! $rule['major'] || 'query_vars' != $rule['major'] ) { ?> hidden<?php } ?>" name="conditions[rules_query_var_key][]" value="<?php echo $rule['query_var_key']; ?>" data-brandon="" placeholder="key" />
<input class="conditions-rule-query-var small-text<?php if ( ! $rule['major'] || 'query_vars' != $rule['major'] ) { ?> hidden<?php } ?>" name="conditions[rules_query_var_value][]" value="<?php echo $rule['query_var_value']; ?>" data-brandon="" placeholder="value" /><?php
}
function tt_widget_conditions_defaults( $defaults, $index ) {
$defaults['query_var_key'] = isset( $_POST['conditions']['rules_query_var_key'][$index] ) ? $_POST['conditions']['rules_query_var_key'][$index] : '';
$defaults['query_var_value'] = isset( $_POST['conditions']['rules_query_var_value'][$index] ) ? $_POST['conditions']['rules_query_var_value'][$index] : '';
return $defaults;
}
function tt_widget_visibility_filter_widget( $condition_result, $rule ) {
if( 'query_vars' == $rule['major']) {
if( get_query_var( $rule['query_var_key'] ) == $rule['query_var_value'] ) {
$condition_result = true;
} else {
$condition_result = false;
}
}
return $condition_result;
}
add_action('admin_init','tt_jetpack_plugin_init');
add_filter( 'widget_conditions_defaults', 'tt_widget_conditions_defaults', 10, 2 );
add_filter( 'widget_visibility_conditions', 'tt_widget_visibility_conditions' );
add_filter( 'widget_visibility_minor_visible', 'tt_widget_visibility_minor_visible', 10, 2 );
add_filter( 'widget_visibility_filter_widget', 'tt_widget_visibility_filter_widget', 10, 2 );
add_action( 'widget_visibility_condition_major', 'tt_widget_visibility_condition_major' );
add_action( "widget_visibility_additional_fields", 'tt_widget_visibility_additional_fields' );
function tt_jetpack_plugin_init() {
global $pagenow;
if( 'widgets.php' == $pagenow) {
add_action( 'admin_head', 'tt_widget_visibility_js',100);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment