/**
 * @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>';
 /**
Example #9
0
 /**
  * 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);
     }
 }