XPressME Integration Kit

Trac

source: trunk/xpressme_integration_kit/wp-content/themes/xpress_default/blocks/widget_block_theme.php @ 252

Last change on this file since 252 was 252, checked in by toemon, 15 years ago

WordPressME2.0.11への対応,(ブロック周りは未完)

File size: 2.5 KB
Line 
1<?php
2function widget_block($options)
3{
4        $mydirname = empty( $options[0] ) ? 'xpress' : $options[0] ;
5        $this_template = empty( $options[1] ) ? 'db:'.$mydirname.'_block_widget.html' : trim( $options[1] );
6    $selected = array_slice($options,2); // get allowed cats
7
8        $output = '';
9        foreach($selected as $select){
10                $ex = explode('::',$select);
11                $sidebar_id = $ex[0];
12                $widget_id = $ex[1] ;
13       
14                ob_start();
15                        render_widget($sidebar_id,$widget_id);
16                        $output .= ob_get_contents();
17                ob_end_clean();
18        }
19//      if (count($selected) > 1)
20                $block['widget'] = "<ul>\n" . $output . "\n</ul>\n";
21//      else
22//              $block['widget'] = $output;                                                             
23        return $block ;
24}
25
26function render_widget($index = 1, $widget_id) {
27        global $wp_registered_sidebars, $wp_registered_widgets;
28
29        if ( is_int($index) ) {
30                $index = "sidebar-$index";
31        } else {
32                $index = sanitize_title($index);
33                foreach ( (array) $wp_registered_sidebars as $key => $value ) {
34                        if ( sanitize_title($value['name']) == $index ) {
35                                $index = $key;
36                                break;
37                        }
38                }
39        }
40        if (!function_exists('wp_get_sidebars_widgets')) {
41                echo 'Not support sidebar widget';
42                return;
43        }
44        $sidebars_widgets = wp_get_sidebars_widgets();
45        $registered_sidebars = $wp_registered_sidebars[$index];
46        $key_exists = array_key_exists($index, $sidebars_widgets);
47        $is_array = is_array($sidebars_widgets[$index]);
48       
49
50       
51        if ( empty($registered_sidebars) || !$key_exists || !$is_array || empty($sidebars_widgets[$index]) )
52                return false;
53
54        $sidebar = $wp_registered_sidebars[$index];
55
56        $did_one = false;
57        foreach ( (array) $sidebars_widgets[$index] as $id ) {
58                if ($id != $widget_id) continue;
59                $params = array_merge(
60                        array( array_merge( $sidebar, array('widget_id' => $id, 'widget_name' => $wp_registered_widgets[$id]['name']) ) ),
61                        (array) $wp_registered_widgets[$id]['params']
62                );
63
64                // Substitute HTML id and class attributes into before_widget
65                $classname_ = '';
66                foreach ( (array) $wp_registered_widgets[$id]['classname'] as $cn ) {
67                        if ( is_string($cn) )
68                                $classname_ .= '_' . $cn;
69                        elseif ( is_object($cn) )
70                                $classname_ .= '_' . get_class($cn);
71                }
72                $classname_ = ltrim($classname_, '_');
73                $params[0]['before_widget'] = sprintf($params[0]['before_widget'], $id, $classname_);
74
75                $params = apply_filters( 'dynamic_sidebar_params', $params );
76
77                $callback = $wp_registered_widgets[$id]['callback'];
78
79                if ( is_callable($callback) ) {
80                        call_user_func_array($callback, $params);
81                        $did_one = true;
82                }
83        }
84
85        return $did_one;
86}
87?>
Note: See TracBrowser for help on using the repository browser.