theme = wp_get_theme(); // Set the default arguments $this->setArguments(); // Set a few help tabs so you can see how it's done $this->setHelpTabs(); // Create the sections and fields $this->setSections(); if ( !isset( $this->args['opt_name'] ) ) { // No errors please return; } $this->ReduxFramework = new ReduxFramework($this->sections, $this->args); // If Redux is running as a plugin, this will remove the demo notice and links add_action( 'redux/plugin/hooks', array( $this, 'remove_demo' ) ); // Function to test the compiler hook and demo CSS output. //add_filter('redux/options/'.$this->args['opt_name'].'/compiler', array( $this, 'compiler_action' ), 10, 2); // Above 10 is a priority, but 2 in necessary to include the dynamically generated CSS to be sent to the function. // Change the arguments after they've been declared, but before the panel is created //add_filter('redux/options/'.$this->args['opt_name'].'/args', array( $this, 'change_arguments' ) ); // Change the default value of a field after it's been set, but before it's been used //add_filter('redux/options/'.$this->args['opt_name'].'/defaults', array( $this,'change_defaults' ) ); // Dynamically add a section. Can be also used to modify sections/fields add_filter('redux/options/'.$this->args['opt_name'].'/sections', array( $this, 'dynamic_section' ) ); } /** This is a test function that will let you see when the compiler hook occurs. It only runs if a field set with compiler=>true is changed. **/ function compiler_action($options, $css) { echo "
This is a section created by adding a filter to the sections array. Can be used by child themes to add/remove sections from the options.
', $this->text_domain), 'icon' => 'el-icon-paper-clip', // Leave this as a blank section, no options just some intro text set above. 'fields' => array() ); return $sections; } /** Filter hook for filtering the args. Good for child themes to override or add to the args array. Can also be used in other functions. **/ function change_arguments($args){ //$args['dev_mode'] = true; return $args; } /** Filter hook for filtering the default value of any given field. Very useful in development mode. **/ function change_defaults($defaults){ $defaults['str_replace'] = "Testing filter hook!"; return $defaults; } // Remove the demo link and the notice of integrated demo from the redux-framework plugin function remove_demo() { // Used to hide the demo mode link from the plugin page. Only used when Redux is a plugin. if ( class_exists('ReduxFrameworkPlugin') ) { remove_filter( 'plugin_row_meta', array( ReduxFrameworkPlugin::get_instance(), 'plugin_meta_demo_mode_link'), null, 2 ); } // Used to hide the activation notice informing users of the demo panel. Only used when Redux is a plugin. remove_action('admin_notices', array( ReduxFrameworkPlugin::get_instance(), 'admin_notices' ) ); } public function setSections() { /** Used within different fields. Simply examples. Search for ACTUAL DECLARATION for field examples **/ // Background Patterns Reader $sample_patterns_path = ReduxFramework::$_dir . '../sample/patterns/'; $sample_patterns_url = ReduxFramework::$_url . '../sample/patterns/'; $sample_patterns = array(); if ( is_dir( $sample_patterns_path ) ) : if ( $sample_patterns_dir = opendir( $sample_patterns_path ) ) : $sample_patterns = array(); while ( ( $sample_patterns_file = readdir( $sample_patterns_dir ) ) !== false ) { if( stristr( $sample_patterns_file, '.png' ) !== false || stristr( $sample_patterns_file, '.jpg' ) !== false ) { $name = explode(".", $sample_patterns_file); $name = str_replace('.'.end($name), '', $sample_patterns_file); $sample_patterns[] = array( 'alt'=>$name,'img' => $sample_patterns_url . $sample_patterns_file ); } } endif; endif; ob_start(); $ct = wp_get_theme(); $this->theme = $ct; $item_name = $this->theme->get('Name'); $tags = $this->theme->Tags; $screenshot = $this->theme->get_screenshot(); $class = $screenshot ? 'has-screenshot' : ''; $customize_title = sprintf( __( 'Customize “%s”',$this->text_domain ), $this->theme->display('Name') ); ?>theme->display('Description'); ?>
theme->parent() ) { printf( '' . __( 'This child theme requires its parent theme, %2$s.' ) . '
', __( 'http://codex.wordpress.org/Child_Themes',$this->text_domain ), $this->theme->parent()->display( 'Name' ) ); } ?>This is the tab content, HTML is allowed.
', $this->text_domain) ); $this->args['help_tabs'][] = array( 'id' => 'redux-opts-2', 'title' => __('Theme Information 2', $this->text_domain), 'content' => __('This is the tab content, HTML is allowed.
', $this->text_domain) ); // Set the help sidebar $this->args['help_sidebar'] = __('This is the sidebar content, HTML is allowed.
', $this->text_domain); } /** All the possible arguments for Redux. For full documentation on arguments, please refer to: https://github.com/ReduxFramework/ReduxFramework/wiki/Arguments **/ public function setArguments() { $theme = wp_get_theme(); // For use with some settings. Not necessary. $this->args = array( // TYPICAL -> Change these values as you need/desire 'opt_name' => $this->options_name, // This is where your data is stored in the database and also becomes your global variable name. 'display_name' => 'Advanced Post Type Ratings Options', // Name that appears at the top of your panel 'display_version' => '1.0', // Version that appears at the top of your panel 'menu_type' => 'menu', //Specify if the admin menu should appear or not. Options: menu or submenu (Under appearance only) 'allow_sub_menu' => true, // Show the sections below the admin menu item or not 'menu_title' => __( 'Post Type Ratings', $this->text_domain ), 'page' => __( 'Post Type Ratings', $this->text_domain ), 'google_api_key' => '', // Must be defined to add google fonts to the typography module 'global_variable' => '', // Set a different name for your global variable other than the opt_name 'dev_mode' => false, // Show the time the page took to load, etc 'customizer' => false, // Enable basic customizer support // OPTIONAL -> Give you extra features 'page_priority' => null, // Order where the menu appears in the admin area. If there is any conflict, something will not show. Warning. 'page_type' => 'submenu', // set to “menu” for a top level menu, or “submenu” to add below an existing item 'page_parent' => 'options-general.php', // For a full list of options, visit: http://codex.wordpress.org/Function_Reference/add_submenu_page#Parameters 'page_permissions' => 'manage_options', // Permissions needed to access the options panel. 'menu_icon' => '', // Specify a custom URL to an icon 'last_tab' => '', // Force your panel to always open to a specific tab (by id) 'page_icon' => 'icon-themes', // Icon displayed in the admin panel next to your menu_title 'page_slug' => $this->options_name.'_options', // Page slug used to denote the panel 'save_defaults' => true, // On load save the defaults to DB before user clicks save or not 'default_show' => false, // If true, shows the default value next to each field that is not the default value. 'default_mark' => '', // What to print by the field's title if the value shown is default. Suggested: * // CAREFUL -> These options are for advanced use only 'transient_time' => 60 * MINUTE_IN_SECONDS, 'output' => true, // Global shut-off for dynamic CSS output by the framework. Will also disable google fonts output 'output_tag' => true, // Allows dynamic CSS to be generated for customizer and google fonts, but stops the dynamic CSS from going to the head //'domain' => 'redux-framework', // Translation domain key. Don't change this unless you want to retranslate all of Redux. //'footer_credit' => '', // Disable the footer credit of Redux. Please leave if you can help it. // FUTURE -> Not in use yet, but reserved or partially implemented. Use at your own risk. 'database' => '', // possible: options, theme_mods, theme_mods_expanded, transient. Not fully functional, warning! 'show_import_export' => true, // REMOVE 'system_info' => false, // REMOVE 'help_tabs' => array(), 'help_sidebar' => '', // __( '', $this->args['domain'] ); ); // SOCIAL ICONS -> Setup custom links in the footer for quick links in your panel footer icons. $this->args['share_icons'][] = array( 'url' => 'https://github.com/ReduxFramework/ReduxFramework', 'title' => 'Visit us on GitHub', 'icon' => 'el-icon-github' // 'img' => '', // You can use icon OR img. IMG needs to be a full URL. ); $this->args['share_icons'][] = array( 'url' => 'https://www.facebook.com/pages/Redux-Framework/243141545850368', 'title' => 'Like us on Facebook', 'icon' => 'el-icon-facebook' ); $this->args['share_icons'][] = array( 'url' => 'http://twitter.com/reduxframework', 'title' => 'Follow us on Twitter', 'icon' => 'el-icon-twitter' ); $this->args['share_icons'][] = array( 'url' => 'http://www.linkedin.com/company/redux-framework', 'title' => 'Find us on LinkedIn', 'icon' => 'el-icon-linkedin' ); } } new ZGITEMRATINGS__OPTIONS_NAME(); } /** Custom function for the callback referenced above */ if ( !function_exists( 'redux_my_custom_field' ) ): function redux_my_custom_field($field, $value) { print_r($field); print_r($value); } endif; /** Custom function for the callback validation referenced above **/ if ( !function_exists( 'redux_validate_callback_function' ) ): function redux_validate_callback_function($field, $value, $existing_value) { $error = false; $value = 'just testing'; /* do your validation if(something) { $value = $value; } elseif(something else) { $error = true; $value = $existing_value; $field['msg'] = 'your custom error message'; } */ $return['value'] = $value; if($error == true) { $return['error'] = $field; } return $return; } endif;