1, 'admin_preview' => 1 );
$saved = get_option( self::OPTION, array() );
$all = wp_parse_args( is_array( $saved ) ? $saved : array(), $defaults );
return isset( $all[ $key ] ) ? $all[ $key ] : null;
}
/* ---------------------------- Settings ---------------------------- */
public static function menu() {
add_submenu_page(
'edit.php?post_type=' . Visigate_Ruleset::CPT,
/* translators: %s: plugin name */
sprintf( __( '%s Settings', 'visigate' ), visigate_brand() ),
__( 'Settings', 'visigate' ),
visigate_capability(),
'visigate-settings',
array( __CLASS__, 'render_settings' )
);
}
public static function register_settings() {
register_setting(
'visigate',
self::OPTION,
array(
'type' => 'array',
'sanitize_callback' => function ( $in ) {
return array(
'auto_nocache' => empty( $in['auto_nocache'] ) ? 0 : 1,
'admin_preview' => empty( $in['admin_preview'] ) ? 0 : 1,
);
},
)
);
}
public static function render_settings() {
?>
visigate_visible( $set_id_or_rules ) —
visigate_conditions, visigate_check_condition, visigate_condition_options, visigate_rest_search, visigate_is_pro, visigate_hidden_block_output, visigate_hidden_shortcode_output, visigate_brand_name, visigate_user_can_manage, visigate_js_data —
$c ) {
if ( 'woo' === $c['group'] && ! class_exists( 'WooCommerce' ) ) {
continue;
}
$conds[ $key ] = array(
'label' => $c['label'],
'group' => $c['group'],
'pro' => (bool) $c['pro'],
'locked' => (bool) $c['locked'],
'lock_label' => (string) $c['lock_label'],
'input' => $c['input'],
'options' => $c['options'],
'source' => $c['source'],
'ops' => $c['ops'],
'default_op' => $c['default_op'],
'days' => (bool) $c['days'],
'no_value' => $c['no_value'],
'key_label' => $c['key_label'] ?? '',
'placeholder' => $c['placeholder'] ?? '',
);
}
$data = array(
'conditions' => $conds,
'groups' => Visigate_Conditions::groups(),
'options' => Visigate_Conditions::options(),
'sets' => Visigate_Ruleset::all_sets(),
'isPro' => visigate_is_pro(),
'teasers' => class_exists( 'Visigate_Pro_Conditions' ) ? array() : Visigate_Conditions::teasers(),
'upgradeUrl' => esc_url_raw( (string) apply_filters( 'visigate_upgrade_url', 'https://persjay.com/plugins/visigate/#pricing' ) ),
'newSetUrl' => admin_url( 'post-new.php?post_type=' . Visigate_Ruleset::CPT ),
'canManage' => current_user_can( visigate_capability() ),
'brand' => visigate_brand(),
);
return apply_filters( 'visigate_js_data', $data );
}
private static function enqueue_builder() {
wp_enqueue_style( 'visigate-builder', VISIGATE_URL . 'assets/css/builder.css', array( 'wp-components' ), VISIGATE_VERSION );
wp_enqueue_script( 'visigate-builder', VISIGATE_URL . 'assets/js/builder.js', array( 'wp-element', 'wp-components', 'wp-i18n', 'wp-api-fetch', 'wp-hooks' ), VISIGATE_VERSION, true );
wp_set_script_translations( 'visigate-builder', 'visigate' );
wp_add_inline_script( 'visigate-builder', 'window.VisigateData = ' . wp_json_encode( self::js_data() ) . ';', 'before' );
}
public static function enqueue_admin( $hook ) {
$screen = get_current_screen();
if ( ! $screen || Visigate_Ruleset::CPT !== $screen->post_type || ! in_array( $hook, array( 'post.php', 'post-new.php' ), true ) ) {
return;
}
self::enqueue_builder();
wp_enqueue_script( 'visigate-admin', VISIGATE_URL . 'assets/js/admin.js', array( 'visigate-builder' ), VISIGATE_VERSION, true );
wp_set_script_translations( 'visigate-admin', 'visigate' );
}
public static function enqueue_editor() {
self::enqueue_builder();
wp_enqueue_script(
'visigate-editor',
VISIGATE_URL . 'assets/js/editor.js',
array( 'visigate-builder', 'wp-hooks', 'wp-compose', 'wp-block-editor', 'wp-blocks', 'wp-i18n' ),
VISIGATE_VERSION,
true
);
wp_set_script_translations( 'visigate-editor', 'visigate' );
}
}