/** * @shortcode hw_widget_content shortcode to display any widget content * @param $prop * @param $content */ function _hw_awc_feature_widget_content_shortcode($prop, $content) { $args = array('widget' => '', 'sidebar' => '', 'params_config' => '', 'skin' => 'skin_default'); $d = shortcode_atts($args, $prop); extract($d); //valid if (empty($widget)) { return; } global $wp_registered_sidebars; global $wp_registered_widgets; //default sidebar params $sidebar_params = array('before_title' => '', 'after_title' => '', 'before_widget' => '', 'after_widget' => ''); if (!empty($sidebar) && !empty($skin) && isset($wp_registered_sidebars[$sidebar])) { $sidebar_params = HW_AWC::apply_sidebar_skin($sidebar, $skin, array('widget_id' => 'hw-shortcode-widget', 'classname' => strtolower($widget) . ' hw-awc-override')); } //get widget instance by saved widget config if (!empty($params_config) && is_numeric($params_config)) { $config = AWC_WidgetFeature_saveconfig::get_widget_setting($params_config); if ($config) { $widget_params = AWC_WidgetFeature_saveconfig::decode_config($config->setting); } } if (isset($widget) && class_exists($widget, false) && !empty($widget_params)) { //display widget content the_widget($widget, $widget_params, $sidebar_params); } }
public function __construct() { //list layouts $this->layouts = HW__Template::getTemplates(); //only accept widget with id base 'hw_taxonomy_post_list_widget' if (class_exists('AWC_WidgetFeature_saveconfig')) { $this->saved_widgets_settings = AWC_WidgetFeature_saveconfig::get_widgets_settings(' where widget="hw_taxonomy_post_list_widget"'); } }
<textarea class="hw_widopt_desc" name="<?php echo $this->get_field_name('hw_widopt_desc'); ?> " id="<?php echo $this->get_field_id('hw_widopt_desc'); ?> "></textarea> </p> <input type="hidden" class="hw_widopt_setting" name="<?php echo $this->get_field_name('hw_widopt_setting'); ?> " id="<?php echo $this->get_field_id('hw_widopt_setting'); ?> " value="<?php echo AWC_WidgetFeature_saveconfig::encode_config($saveconfig); ?> "/> <p> <input type="button" class="button" name="saveconfig_btn" value="<?php _e('Lưu'); ?> " onclick="hwawc_widfea_saveconfig(this,'#<?php echo $this->get_field_id('result'); ?> ')"/> <div id="<?php echo $this->get_field_id('result'); ?> "></div> </p>
/** * display column content * @param $item * @return mixed */ function column_group($item) { $groups = AWC_WidgetFeature_saveconfig::get_groups(); return isset($groups[$item->_group]) ? $groups[$item->_group] : $item->_group; }
/** * ajax callback */ public function _ajax_hwawc_widfea_saveconfig() { if (!wp_verify_nonce($_REQUEST['nonce'], "hwawc_widfea_saveconfig_nonce")) { exit("No naughty business please"); } if (!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') { //$result = json_encode($result); $setting = isset($_POST['setting']) ? $_POST['setting'] : ''; if (!empty($setting)) { //remove setting from this widget feature $setting = AWC_WidgetFeature_saveconfig::decode_config($setting); $setting = $this->remove_settings($setting); //encode widget settings $setting = AWC_WidgetFeature_saveconfig::encode_config($setting); } $data = array('name' => isset($_POST['name']) ? $_POST['name'] : '', '_group' => isset($_POST['group']) ? $_POST['group'] : '', 'setting' => $setting, 'description' => isset($_POST['description']) ? $_POST['description'] : '', 'widget' => isset($_POST['widget']) ? $_POST['widget'] : ''); $insert_id = $this->add_widget_setting($data); echo $insert_id; //return new id inserted to database } else { header("Location: " . $_SERVER["HTTP_REFERER"]); } die; }
/** * since yarpp v4.2.5 * @param $posts: related posts result * @param array $args: keys 'function','args','related_ID' */ public function _yarpp_results($posts, $args) { global $wp_query; $wp_query->posts = $posts; /*$cat_posts = $wp_query; $arrExlpodeFields = array('title');*/ /*if(isset($args['args']['compatible_vars']) && is_array($args['args']['compatible_vars'])){ $this->compatible_vars = array_merge($this->compatible_vars, $args['args']['compatible_vars']); } $this->compatible_vars = array_merge($this->compatible_vars, $args['args']['skin']->instance->get_migrate()); foreach($this->compatible_vars as $var => $val){ $$var = is_string($val) && isset($$val)? $$val : $val; } */ //default sidebar params $sidebar_params = array('before_widget' => '<div id="%1$s" class="hw-widget %2$s">', 'after_widget' => '</div>', 'before_title' => '<h3 class="widget-title">', 'after_title' => '</h3>'); //valid posts if (!isset($args['args']['skin'])) { return $posts; } $hwrp = $skin = $args['args']['skin']; if (isset($args['args']['hwrp_current'])) { $hwrp = (object) $args['args']['hwrp_current']; //get current post type related data } //migrate vars $migrate_data = $skin->instance->get_migrate(); extract($migrate_data); //get sidebar wrapper if (isset($skin->box_skin)) { global $wp_registered_sidebars; $sidebar = $args['args']['skin']->box_skin; $sidebar_widget_skin = $args['args']['skin']->box_widget_skin; //override sidebar skin box with other $sidebar_params = array(); //extract($sidebar_params); //extract sidebar param if ($sidebar_widget_skin) { //get change default sidebar skin, here we create 4 holder: sidebar_default, skin1,skin2,skin3 $skin_data = HW_AWC_Sidebar_Settings::get_sidebar_setting($sidebar_widget_skin, $sidebar); HW_SKIN::apply_skin_data($skin_data, array($this, '_hw_skin_resume_skin_data'), array('sidebar' => $sidebar, 'sidebar_widget_skin' => $sidebar_widget_skin, 'sidebar_params' => &$sidebar_params)); $sidebar_params = HW_AWC::format_widget_sidebar_params(null, $sidebar, array('classname' => 'hw-related-posts hw-awc-override', 'sidebar_params' => $sidebar_params)); } } //check related content from widget config if (!empty($skin->widget_config)) { $widget_instance = AWC_WidgetFeature_saveconfig::get_widget_setting_instance($skin->widget_config, array('widget' => 'hw_taxonomy_post_list_widget', 'group' => 'main_loop')); //valid data if (!isset($widget_instance['query_data'])) { $widget_instance['query_data'] = 'current_context'; } //get global $wp_query //override sidebar params from awc feature assign to widget if (isset($sidebar_params) && isset($sidebar)) { $sidebar_params = HW_AWC::format_sidebar_params($sidebar, $sidebar_params, $widget_instance); } } /** * display related content */ if (!isset($widget_instance)) { extract($sidebar_params); } //extract sidebar param if not use HWTPL config if (isset($before_widget)) { echo $before_widget; } //widget title if (isset($before_title)) { echo $before_title; } echo apply_filters('hw_related_posts_title', $hwrp->title); if (isset($after_title)) { echo $after_title; } //do action before do_action('hoangweb_before_loop'); do_action('hw_yarpp_results_before', $hwrp); if (isset($widget_instance)) { /** * output widget, when using the_widget to show widget content, * note that you set up & enable sidebar skin at /admin.php?page=hw_sidebar_widgets_settings this mean sidebar apply to yarpp it work for that skin * And no related to active sidebar that using on website, which call by function 'dynamic_sidebar' /hw_dynamic_sidebar */ the_widget('HW_Taxonomy_Post_List_widget', $widget_instance, $sidebar_params); } else { if (isset($args['args']['template'])) { include $args['args']['template']; } } //do action after do_action('hw_yarpp_results_after', $hwrp); do_action('hoangweb_after_loop'); if (isset($after_widget)) { echo $after_widget; } return false; //disable behavior as default $yarpp->display_related do }
/** * load saved widgets config data */ public static function _ajax_load_saveconfig_widgets_data() { if (!wp_verify_nonce($_REQUEST['nonce'], "hw_load_saveconfig_widgets_data_nonce")) { exit("Lỗi! bạn không có quyền hoặc phiên làm việc hết hạn."); } if (!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') { //$result = json_encode($result); $widgetconfig_groups = AWC_WidgetFeature_saveconfig::get_widgets_settings_select(' WHERE _group="' . self::WIDGET_CONFIG_GROUP . '"'); echo json_encode($widgetconfig_groups); } else { header("Location: " . $_SERVER["HTTP_REFERER"]); } die; }
//skin preview //get skin config if (1 || empty($skins[$post_type]['hwskin_config'])) { //ensure sure to keep update skin config $skins[$post_type]['hwskin_config'] = $this->skin->get_config(true); } //enable filter skin terms $enable_filter_term = isset($skins[$post_type]['filter_terms']) ? 1 : 0; $active = isset($skins[$post_type]['active']) ? 1 : 0; //get all active sidebars select $sidebars = hwawc_get_active_sidebars_select(); $current_box = isset($skins[$post_type]['box_skin']) ? $skins[$post_type]['box_skin'] : ''; //pick sidebar widget skin $current_box_skin = isset($skins[$post_type]['box_widget_skin']) ? $skins[$post_type]['box_widget_skin'] : ''; //since we use hw-taxonomy-post-list-widget plugin to query all posts type in wp, and I also apply to this plugin $widgets_settings = AWC_WidgetFeature_saveconfig::get_widgets_settings_select(' where widget="hw_taxonomy_post_list_widget"'); $current_widgetconfig = isset($skins[$post_type]['widget_config']) ? $skins[$post_type]['widget_config'] : ''; echo '<tr>'; echo '<td><input type="checkbox" name="' . $aSkin_field_name . '[active]" id="enable_' . $post_type . '" ' . ($active ? 'checked="checked"' : '') . '/></td>'; //enable tog echo "<td>{$pt->labels->name}</td>"; /** * skins chooser */ echo '<td>' . $skins_list; //first develop, we use same hw_skin instance to manage all post types //echo '<input type="hidden" name="'.$aSkin_field_name.'[hwskin_config]" value="'.$skins[$post_type]['hwskin_config'].'"/></td>'; echo $this->skin->create_config_hiddenfield($aSkin_field_name, $skins[$post_type]); echo '</td>'; //echo '<span></span>'; /**
/** * main loop */ public static function hw_theme_get_main() { //init //hw_taxonomy_post_list_widget widget setting $setting = array(); //default sidebar params $sidebar_params = array('before_widget' => '<div id="%1$s" class="hw-widget %2$s *1" >', 'after_widget' => '</div>', 'before_title' => '<h3 class="widget-title %1$s {css_title}">', 'after_title' => '</h3>'); //override loop template base context $loop_temp = HW__Template::get_current_context_loop_template(); global $wp_registered_sidebars; global $wp_registered_widgets; if (!empty($loop_temp)) { //$widg = AWC_WidgetFeature_saveconfig::get_widget_setting($loop_temp['widget_config']); $setting = AWC_WidgetFeature_saveconfig::get_widget_setting_instance($loop_temp['widget_config'], array('widget' => 'hw_taxonomy_post_list_widget', 'group' => 'main_loop')); //valid data if (!isset($setting['query_data'])) { $setting['query_data'] = 'current_context'; } //get global $wp_query //$setting['widget_title'] = 'sdfgdg'; //set widget title by skin //get sidebar box if ($loop_temp['sidebar'] && isset($wp_registered_sidebars[$loop_temp['sidebar']])) { $sidebar = $loop_temp['sidebar']; //sidebar id $sidebar_params = $wp_registered_sidebars[$sidebar]; if (isset($loop_temp['sidebar_widget_skin'])) { $sidebar_widget_skin = $loop_temp['sidebar_widget_skin']; //get change default sidebar skin, here we create 4 holder: sidebar_default, skin1,skin2,skin3 $skin_data = HW_AWC_Sidebar_Settings::get_sidebar_setting($sidebar_widget_skin, $sidebar); HW_SKIN::apply_skin_data($skin_data, 'HW__Template::_hw_skin_resume_skin_data', array('sidebar' => $sidebar, 'sidebar_widget_skin' => $sidebar_widget_skin, 'sidebar_params' => &$sidebar_params)); } } list($widget_id, $t) = each($wp_registered_widgets); //get first widget as demo $sidebar_params = HW_AWC::format_widget_sidebar_params($widget_id, $sidebar_params, array('classname' => 'main-content hw-awc-override', 'widget_id' => 'hw-main-loop-content')); //override sidebar params from awc feature assign to widget if (isset($sidebar_params) && isset($sidebar)) { $sidebar_params = HW_AWC::format_sidebar_params($sidebar, $sidebar_params, $setting); } //important: since any sidebar skin use wrapper class 'hw-awc-override' //$sidebar_params['before_widget'] = sprintf($sidebar_params['before_widget'], /*$widget_id, $classname*/'hw-main-loop-content','main-content hw-awc-override'); do_action('hw_before_loop'); /** * output widget, when using the_widget to show widget content, * * note that you set up & enable sidebar skin at /admin.php?page=hw_sidebar_widgets_settings this mean sidebar apply to yarpp it work for that skin * And no related to active sidebar that using on website, which call by function 'dynamic_sidebar' /hw_dynamic_sidebar */ if (class_exists('HW_Taxonomy_Post_List_widget')) { the_widget('HW_Taxonomy_Post_List_widget', $setting, $sidebar_params); } do_action('hw_after_loop'); } elseif (APF_Page_Templates::get_instance()->hw_loop_template()) { //do nothing } else { $context = HW__Template::get_current_template_file(); //determine current template $current = self::get_current_template(); if ($current && method_exists($current, 'Main')) { $current->Main(); //display main content of current template } //filter default template do_action('hw_theme_get_main_default', $context); } }