Changeset 42343 for trunk/src/wp-includes/widgets.php
- Timestamp:
- 11/30/2017 11:09:33 PM (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/wp-includes/widgets.php
r41942 r42343 88 88 'wp_widget_rss_control', 89 89 'wp_widget_recent_comments', 90 'wp_widget_recent_comments_control' 90 'wp_widget_recent_comments_control', 91 91 ); 92 92 … … 168 168 $number = (int) $number; 169 169 170 if ( is_string($args) ) 171 parse_str($args, $args); 170 if ( is_string( $args ) ) { 171 parse_str( $args, $args ); 172 } 172 173 173 174 for ( $i = 1; $i <= $number; $i++ ) { 174 175 $_args = $args; 175 176 176 if ( $number > 1 ) 177 $_args['name'] = isset($args['name']) ? sprintf($args['name'], $i) : sprintf(__('Sidebar %d'), $i); 178 else 179 $_args['name'] = isset($args['name']) ? $args['name'] : __('Sidebar'); 177 if ( $number > 1 ) { 178 $_args['name'] = isset( $args['name'] ) ? sprintf( $args['name'], $i ) : sprintf( __( 'Sidebar %d' ), $i ); 179 } else { 180 $_args['name'] = isset( $args['name'] ) ? $args['name'] : __( 'Sidebar' ); 181 } 180 182 181 183 // Custom specified ID's are suffixed if they exist already. 182 184 // Automatically generated sidebar names need to be suffixed regardless starting at -0 183 if ( isset( $args['id']) ) {185 if ( isset( $args['id'] ) ) { 184 186 $_args['id'] = $args['id']; 185 $n = 2; // Start at -2 for conflicting custom ID's187 $n = 2; // Start at -2 for conflicting custom ID's 186 188 while ( is_registered_sidebar( $_args['id'] ) ) { 187 189 $_args['id'] = $args['id'] . '-' . $n++; … … 193 195 } while ( is_registered_sidebar( $_args['id'] ) ); 194 196 } 195 register_sidebar( $_args);197 register_sidebar( $_args ); 196 198 } 197 199 } … … 238 240 * @return string Sidebar ID added to $wp_registered_sidebars global. 239 241 */ 240 function register_sidebar( $args = array()) {242 function register_sidebar( $args = array() ) { 241 243 global $wp_registered_sidebars; 242 244 243 $i = count( $wp_registered_sidebars) + 1;245 $i = count( $wp_registered_sidebars ) + 1; 244 246 245 247 $id_is_empty = empty( $args['id'] ); 246 248 247 249 $defaults = array( 248 'name' => sprintf(__('Sidebar %d'), $i ),249 'id' => "sidebar-$i",250 'description' => '',251 'class' => '',250 'name' => sprintf( __( 'Sidebar %d' ), $i ), 251 'id' => "sidebar-$i", 252 'description' => '', 253 'class' => '', 252 254 'before_widget' => '<li id="%1$s" class="widget %2$s">', 253 'after_widget' => "</li>\n",254 'before_title' => '<h2 class="widgettitle">',255 'after_title' => "</h2>\n",255 'after_widget' => "</li>\n", 256 'before_title' => '<h2 class="widgettitle">', 257 'after_title' => "</h2>\n", 256 258 ); 257 259 … … 263 265 } 264 266 265 $wp_registered_sidebars[ $sidebar['id']] = $sidebar;266 267 add_theme_support( 'widgets');267 $wp_registered_sidebars[ $sidebar['id'] ] = $sidebar; 268 269 add_theme_support( 'widgets' ); 268 270 269 271 /** … … 340 342 global $wp_registered_widgets, $wp_registered_widget_controls, $wp_registered_widget_updates, $_wp_deprecated_widgets_callbacks; 341 343 342 $id = strtolower( $id);343 344 if ( empty( $output_callback) ) {345 unset( $wp_registered_widgets[$id]);344 $id = strtolower( $id ); 345 346 if ( empty( $output_callback ) ) { 347 unset( $wp_registered_widgets[ $id ] ); 346 348 return; 347 349 } 348 350 349 $id_base = _get_widget_id_base( $id);350 if ( in_array( $output_callback, $_wp_deprecated_widgets_callbacks, true) && !is_callable($output_callback) ) {351 $id_base = _get_widget_id_base( $id ); 352 if ( in_array( $output_callback, $_wp_deprecated_widgets_callbacks, true ) && ! is_callable( $output_callback ) ) { 351 353 unset( $wp_registered_widget_controls[ $id ] ); 352 354 unset( $wp_registered_widget_updates[ $id_base ] ); … … 354 356 } 355 357 356 $defaults = array( 'classname' => $output_callback);357 $options = wp_parse_args($options, $defaults);358 $widget = array(359 'name' => $name,360 'id' => $id,358 $defaults = array( 'classname' => $output_callback ); 359 $options = wp_parse_args( $options, $defaults ); 360 $widget = array( 361 'name' => $name, 362 'id' => $id, 361 363 'callback' => $output_callback, 362 'params' => array_slice(func_get_args(), 4)364 'params' => array_slice( func_get_args(), 4 ), 363 365 ); 364 $widget = array_merge($widget, $options);365 366 if ( is_callable( $output_callback) && ( !isset($wp_registered_widgets[$id]) || did_action( 'widgets_init' ) ) ) {366 $widget = array_merge( $widget, $options ); 367 368 if ( is_callable( $output_callback ) && ( ! isset( $wp_registered_widgets[ $id ] ) || did_action( 'widgets_init' ) ) ) { 367 369 368 370 /** … … 374 376 */ 375 377 do_action( 'wp_register_sidebar_widget', $widget ); 376 $wp_registered_widgets[ $id] = $widget;378 $wp_registered_widgets[ $id ] = $widget; 377 379 } 378 380 } … … 393 395 */ 394 396 function wp_widget_description( $id ) { 395 if ( ! is_scalar($id) )397 if ( ! is_scalar( $id ) ) { 396 398 return; 399 } 397 400 398 401 global $wp_registered_widgets; 399 402 400 if ( isset($wp_registered_widgets[$id]['description']) ) 401 return esc_html( $wp_registered_widgets[$id]['description'] ); 403 if ( isset( $wp_registered_widgets[ $id ]['description'] ) ) { 404 return esc_html( $wp_registered_widgets[ $id ]['description'] ); 405 } 402 406 } 403 407 … … 416 420 */ 417 421 function wp_sidebar_description( $id ) { 418 if ( ! is_scalar($id) )422 if ( ! is_scalar( $id ) ) { 419 423 return; 424 } 420 425 421 426 global $wp_registered_sidebars; 422 427 423 if ( isset($wp_registered_sidebars[$id]['description']) ) 424 return esc_html( $wp_registered_sidebars[$id]['description'] ); 428 if ( isset( $wp_registered_sidebars[ $id ]['description'] ) ) { 429 return esc_html( $wp_registered_sidebars[ $id ]['description'] ); 430 } 425 431 } 426 432 … … 432 438 * @param int|string $id Widget ID. 433 439 */ 434 function wp_unregister_sidebar_widget( $id) {440 function wp_unregister_sidebar_widget( $id ) { 435 441 436 442 /** … … 443 449 do_action( 'wp_unregister_sidebar_widget', $id ); 444 450 445 wp_register_sidebar_widget( $id, '', '');446 wp_unregister_widget_control( $id);451 wp_register_sidebar_widget( $id, '', '' ); 452 wp_unregister_widget_control( $id ); 447 453 } 448 454 … … 475 481 global $wp_registered_widget_controls, $wp_registered_widget_updates, $wp_registered_widgets, $_wp_deprecated_widgets_callbacks; 476 482 477 $id = strtolower($id);478 $id_base = _get_widget_id_base( $id);479 480 if ( empty( $control_callback) ) {481 unset( $wp_registered_widget_controls[$id]);482 unset( $wp_registered_widget_updates[$id_base]);483 $id = strtolower( $id ); 484 $id_base = _get_widget_id_base( $id ); 485 486 if ( empty( $control_callback ) ) { 487 unset( $wp_registered_widget_controls[ $id ] ); 488 unset( $wp_registered_widget_updates[ $id_base ] ); 483 489 return; 484 490 } 485 491 486 if ( in_array( $control_callback, $_wp_deprecated_widgets_callbacks, true) && !is_callable($control_callback) ) {492 if ( in_array( $control_callback, $_wp_deprecated_widgets_callbacks, true ) && ! is_callable( $control_callback ) ) { 487 493 unset( $wp_registered_widgets[ $id ] ); 488 494 return; 489 495 } 490 496 491 if ( isset( $wp_registered_widget_controls[$id]) && !did_action( 'widgets_init' ) )497 if ( isset( $wp_registered_widget_controls[ $id ] ) && ! did_action( 'widgets_init' ) ) { 492 498 return; 493 494 $defaults = array('width' => 250, 'height' => 200 ); // height is never used 495 $options = wp_parse_args($options, $defaults); 496 $options['width'] = (int) $options['width']; 499 } 500 501 $defaults = array( 502 'width' => 250, 503 'height' => 200, 504 ); // height is never used 505 $options = wp_parse_args( $options, $defaults ); 506 $options['width'] = (int) $options['width']; 497 507 $options['height'] = (int) $options['height']; 498 508 499 509 $widget = array( 500 'name' => $name,501 'id' => $id,510 'name' => $name, 511 'id' => $id, 502 512 'callback' => $control_callback, 503 'params' => array_slice(func_get_args(), 4)513 'params' => array_slice( func_get_args(), 4 ), 504 514 ); 505 $widget = array_merge( $widget, $options);506 507 $wp_registered_widget_controls[ $id] = $widget;508 509 if ( isset( $wp_registered_widget_updates[$id_base]) )515 $widget = array_merge( $widget, $options ); 516 517 $wp_registered_widget_controls[ $id ] = $widget; 518 519 if ( isset( $wp_registered_widget_updates[ $id_base ] ) ) { 510 520 return; 511 512 if ( isset($widget['params'][0]['number']) ) 521 } 522 523 if ( isset( $widget['params'][0]['number'] ) ) { 513 524 $widget['params'][0]['number'] = -1; 514 515 unset($widget['width'], $widget['height'], $widget['name'], $widget['id']); 516 $wp_registered_widget_updates[$id_base] = $widget; 525 } 526 527 unset( $widget['width'], $widget['height'], $widget['name'], $widget['id'] ); 528 $wp_registered_widget_updates[ $id_base ] = $widget; 517 529 } 518 530 … … 532 544 global $wp_registered_widget_updates; 533 545 534 if ( isset($wp_registered_widget_updates[$id_base]) ) { 535 if ( empty($update_callback) ) 536 unset($wp_registered_widget_updates[$id_base]); 546 if ( isset( $wp_registered_widget_updates[ $id_base ] ) ) { 547 if ( empty( $update_callback ) ) { 548 unset( $wp_registered_widget_updates[ $id_base ] ); 549 } 537 550 return; 538 551 } … … 540 553 $widget = array( 541 554 'callback' => $update_callback, 542 'params' => array_slice(func_get_args(), 3)555 'params' => array_slice( func_get_args(), 3 ), 543 556 ); 544 557 545 $widget = array_merge($widget, $options);546 $wp_registered_widget_updates[ $id_base] = $widget;558 $widget = array_merge( $widget, $options ); 559 $wp_registered_widget_updates[ $id_base ] = $widget; 547 560 } 548 561 … … 560 573 * Default empty array. 561 574 */ 562 function _register_widget_form_callback( $id, $name, $form_callback, $options = array()) {575 function _register_widget_form_callback( $id, $name, $form_callback, $options = array() ) { 563 576 global $wp_registered_widget_controls; 564 577 565 $id = strtolower( $id);566 567 if ( empty( $form_callback) ) {568 unset( $wp_registered_widget_controls[$id]);578 $id = strtolower( $id ); 579 580 if ( empty( $form_callback ) ) { 581 unset( $wp_registered_widget_controls[ $id ] ); 569 582 return; 570 583 } 571 584 572 if ( isset( $wp_registered_widget_controls[$id]) && !did_action( 'widgets_init' ) )585 if ( isset( $wp_registered_widget_controls[ $id ] ) && ! did_action( 'widgets_init' ) ) { 573 586 return; 574 575 $defaults = array('width' => 250, 'height' => 200 ); 576 $options = wp_parse_args($options, $defaults); 577 $options['width'] = (int) $options['width']; 587 } 588 589 $defaults = array( 590 'width' => 250, 591 'height' => 200, 592 ); 593 $options = wp_parse_args( $options, $defaults ); 594 $options['width'] = (int) $options['width']; 578 595 $options['height'] = (int) $options['height']; 579 596 580 597 $widget = array( 581 'name' => $name,582 'id' => $id,598 'name' => $name, 599 'id' => $id, 583 600 'callback' => $form_callback, 584 'params' => array_slice(func_get_args(), 4)601 'params' => array_slice( func_get_args(), 4 ), 585 602 ); 586 $widget = array_merge( $widget, $options);587 588 $wp_registered_widget_controls[ $id] = $widget;603 $widget = array_merge( $widget, $options ); 604 605 $wp_registered_widget_controls[ $id ] = $widget; 589 606 } 590 607 … … 596 613 * @param int|string $id Widget ID. 597 614 */ 598 function wp_unregister_widget_control( $id) {615 function wp_unregister_widget_control( $id ) { 599 616 wp_register_widget_control( $id, '', '' ); 600 617 } … … 635 652 do_action( 'dynamic_sidebar_before', $index, false ); 636 653 /** This action is documented in wp-includes/widget.php */ 637 do_action( 'dynamic_sidebar_after', 654 do_action( 'dynamic_sidebar_after', $index, false ); 638 655 /** This filter is documented in wp-includes/widget.php */ 639 656 return apply_filters( 'dynamic_sidebar_has_widgets', false, $index ); … … 653 670 */ 654 671 do_action( 'dynamic_sidebar_before', $index, true ); 655 $sidebar = $wp_registered_sidebars[ $index];672 $sidebar = $wp_registered_sidebars[ $index ]; 656 673 657 674 $did_one = false; 658 foreach ( (array) $sidebars_widgets[$index] as $id ) { 659 660 if ( !isset($wp_registered_widgets[$id]) ) continue; 675 foreach ( (array) $sidebars_widgets[ $index ] as $id ) { 676 677 if ( ! isset( $wp_registered_widgets[ $id ] ) ) { 678 continue; 679 } 661 680 662 681 $params = array_merge( 663 array( array_merge( $sidebar, array('widget_id' => $id, 'widget_name' => $wp_registered_widgets[$id]['name']) ) ), 664 (array) $wp_registered_widgets[$id]['params'] 682 array( 683 array_merge( 684 $sidebar, array( 685 'widget_id' => $id, 686 'widget_name' => $wp_registered_widgets[ $id ]['name'], 687 ) 688 ), 689 ), 690 (array) $wp_registered_widgets[ $id ]['params'] 665 691 ); 666 692 667 693 // Substitute HTML id and class attributes into before_widget 668 694 $classname_ = ''; 669 foreach ( (array) $wp_registered_widgets[ $id]['classname'] as $cn ) {670 if ( is_string( $cn) )695 foreach ( (array) $wp_registered_widgets[ $id ]['classname'] as $cn ) { 696 if ( is_string( $cn ) ) { 671 697 $classname_ .= '_' . $cn; 672 elseif ( is_object($cn) ) 673 $classname_ .= '_' . get_class($cn); 674 } 675 $classname_ = ltrim($classname_, '_'); 676 $params[0]['before_widget'] = sprintf($params[0]['before_widget'], $id, $classname_); 698 } elseif ( is_object( $cn ) ) { 699 $classname_ .= '_' . get_class( $cn ); 700 } 701 } 702 $classname_ = ltrim( $classname_, '_' ); 703 $params[0]['before_widget'] = sprintf( $params[0]['before_widget'], $id, $classname_ ); 677 704 678 705 /** … … 710 737 $params = apply_filters( 'dynamic_sidebar_params', $params ); 711 738 712 $callback = $wp_registered_widgets[ $id]['callback'];739 $callback = $wp_registered_widgets[ $id ]['callback']; 713 740 714 741 /** … … 739 766 do_action( 'dynamic_sidebar', $wp_registered_widgets[ $id ] ); 740 767 741 if ( is_callable( $callback) ) {742 call_user_func_array( $callback, $params);768 if ( is_callable( $callback ) ) { 769 call_user_func_array( $callback, $params ); 743 770 $did_one = true; 744 771 } … … 802 829 $sidebars_widgets = wp_get_sidebars_widgets(); 803 830 804 if ( is_array( $sidebars_widgets) ) {831 if ( is_array( $sidebars_widgets ) ) { 805 832 foreach ( $sidebars_widgets as $sidebar => $widgets ) { 806 833 if ( $skip_inactive && ( 'wp_inactive_widgets' === $sidebar || 'orphaned_widgets' === substr( $sidebar, 0, 16 ) ) ) { … … 808 835 } 809 836 810 if ( is_array( $widgets) ) {837 if ( is_array( $widgets ) ) { 811 838 foreach ( $widgets as $widget ) { 812 if ( ( $callback && isset( $wp_registered_widgets[$widget]['callback']) && $wp_registered_widgets[$widget]['callback'] == $callback ) || ( $id_base && _get_widget_id_base($widget) == $id_base ) ) {813 if ( ! $widget_id || $widget_id == $wp_registered_widgets[$widget]['id'] )839 if ( ( $callback && isset( $wp_registered_widgets[ $widget ]['callback'] ) && $wp_registered_widgets[ $widget ]['callback'] == $callback ) || ( $id_base && _get_widget_id_base( $widget ) == $id_base ) ) { 840 if ( ! $widget_id || $widget_id == $wp_registered_widgets[ $widget ]['id'] ) { 814 841 return $sidebar; 842 } 815 843 } 816 844 } … … 833 861 function is_dynamic_sidebar() { 834 862 global $wp_registered_widgets, $wp_registered_sidebars; 835 $sidebars_widgets = get_option( 'sidebars_widgets');863 $sidebars_widgets = get_option( 'sidebars_widgets' ); 836 864 foreach ( (array) $wp_registered_sidebars as $index => $sidebar ) { 837 865 if ( ! empty( $sidebars_widgets[ $index ] ) ) { 838 foreach ( (array) $sidebars_widgets[ $index] as $widget )839 if ( array_key_exists( $widget, $wp_registered_widgets) )866 foreach ( (array) $sidebars_widgets[ $index ] as $widget ) { 867 if ( array_key_exists( $widget, $wp_registered_widgets ) ) { 840 868 return true; 869 } 870 } 841 871 } 842 872 } … … 853 883 */ 854 884 function is_active_sidebar( $index ) { 855 $index = ( is_int($index) ) ? "sidebar-$index" : sanitize_title($index);856 $sidebars_widgets = wp_get_sidebars_widgets();857 $is_active_sidebar = ! empty( $sidebars_widgets[ $index] );885 $index = ( is_int( $index ) ) ? "sidebar-$index" : sanitize_title( $index ); 886 $sidebars_widgets = wp_get_sidebars_widgets(); 887 $is_active_sidebar = ! empty( $sidebars_widgets[ $index ] ); 858 888 859 889 /** … … 889 919 */ 890 920 function wp_get_sidebars_widgets( $deprecated = true ) { 891 if ( $deprecated !== true ) 921 if ( $deprecated !== true ) { 892 922 _deprecated_argument( __FUNCTION__, '2.8.1' ); 923 } 893 924 894 925 global $_wp_sidebars_widgets, $sidebars_widgets; … … 896 927 // If loading from front page, consult $_wp_sidebars_widgets rather than options 897 928 // to see if wp_convert_widget_settings() has made manipulations in memory. 898 if ( !is_admin() ) { 899 if ( empty($_wp_sidebars_widgets) ) 900 $_wp_sidebars_widgets = get_option('sidebars_widgets', array()); 929 if ( ! is_admin() ) { 930 if ( empty( $_wp_sidebars_widgets ) ) { 931 $_wp_sidebars_widgets = get_option( 'sidebars_widgets', array() ); 932 } 901 933 902 934 $sidebars_widgets = $_wp_sidebars_widgets; 903 935 } else { 904 $sidebars_widgets = get_option('sidebars_widgets', array()); 905 } 906 907 if ( is_array( $sidebars_widgets ) && isset($sidebars_widgets['array_version']) ) 908 unset($sidebars_widgets['array_version']); 936 $sidebars_widgets = get_option( 'sidebars_widgets', array() ); 937 } 938 939 if ( is_array( $sidebars_widgets ) && isset( $sidebars_widgets['array_version'] ) ) { 940 unset( $sidebars_widgets['array_version'] ); 941 } 909 942 910 943 /** … … 955 988 $defaults = array(); 956 989 957 foreach ( (array) $wp_registered_sidebars as $index => $sidebar ) 958 $defaults[$index] = array(); 990 foreach ( (array) $wp_registered_sidebars as $index => $sidebar ) { 991 $defaults[ $index ] = array(); 992 } 959 993 960 994 return $defaults; … … 973 1007 * @return array 974 1008 */ 975 function wp_convert_widget_settings( $base_name, $option_name, $settings) {1009 function wp_convert_widget_settings( $base_name, $option_name, $settings ) { 976 1010 // This test may need expanding. 977 1011 $single = $changed = false; 978 if ( empty( $settings) ) {1012 if ( empty( $settings ) ) { 979 1013 $single = true; 980 1014 } else { 981 foreach ( array_keys( $settings) as $number ) {982 if ( 'number' == $number ) 1015 foreach ( array_keys( $settings ) as $number ) { 1016 if ( 'number' == $number ) { 983 1017 continue; 984 if ( !is_numeric($number) ) { 1018 } 1019 if ( ! is_numeric( $number ) ) { 985 1020 $single = true; 986 1021 break; … … 994 1029 // If loading from the front page, update sidebar in memory but don't save to options 995 1030 if ( is_admin() ) { 996 $sidebars_widgets = get_option( 'sidebars_widgets');1031 $sidebars_widgets = get_option( 'sidebars_widgets' ); 997 1032 } else { 998 if ( empty($GLOBALS['_wp_sidebars_widgets']) ) 999 $GLOBALS['_wp_sidebars_widgets'] = get_option('sidebars_widgets', array()); 1033 if ( empty( $GLOBALS['_wp_sidebars_widgets'] ) ) { 1034 $GLOBALS['_wp_sidebars_widgets'] = get_option( 'sidebars_widgets', array() ); 1035 } 1000 1036 $sidebars_widgets = &$GLOBALS['_wp_sidebars_widgets']; 1001 1037 } 1002 1038 1003 1039 foreach ( (array) $sidebars_widgets as $index => $sidebar ) { 1004 if ( is_array( $sidebar) ) {1040 if ( is_array( $sidebar ) ) { 1005 1041 foreach ( $sidebar as $i => $name ) { 1006 1042 if ( $base_name == $name ) { 1007 $sidebars_widgets[ $index][$i] = "$name-2";1008 $changed = true;1043 $sidebars_widgets[ $index ][ $i ] = "$name-2"; 1044 $changed = true; 1009 1045 break 2; 1010 1046 } … … 1013 1049 } 1014 1050 1015 if ( is_admin() && $changed ) 1016 update_option('sidebars_widgets', $sidebars_widgets); 1051 if ( is_admin() && $changed ) { 1052 update_option( 'sidebars_widgets', $sidebars_widgets ); 1053 } 1017 1054 } 1018 1055 1019 1056 $settings['_multiwidget'] = 1; 1020 if ( is_admin() ) 1057 if ( is_admin() ) { 1021 1058 update_option( $option_name, $settings ); 1059 } 1022 1060 1023 1061 return $settings; … … 1055 1093 } 1056 1094 1057 $widget_obj = $wp_widget_factory->widgets[ $widget];1095 $widget_obj = $wp_widget_factory->widgets[ $widget ]; 1058 1096 if ( ! ( $widget_obj instanceof WP_Widget ) ) { 1059 1097 return; 1060 1098 } 1061 1099 1062 $default_args = array(1100 $default_args = array( 1063 1101 'before_widget' => '<div class="widget %s">', 1064 'after_widget' => "</div>",1102 'after_widget' => '</div>', 1065 1103 'before_title' => '<h2 class="widgettitle">', 1066 1104 'after_title' => '</h2>', 1067 1105 ); 1068 $args = wp_parse_args( $args, $default_args );1106 $args = wp_parse_args( $args, $default_args ); 1069 1107 $args['before_widget'] = sprintf( $args['before_widget'], $widget_obj->widget_options['classname'] ); 1070 1108 1071 $instance = wp_parse_args( $instance);1109 $instance = wp_parse_args( $instance ); 1072 1110 1073 1111 /** … … 1082 1120 do_action( 'the_widget', $widget, $instance, $args ); 1083 1121 1084 $widget_obj->_set( -1);1085 $widget_obj->widget( $args, $instance);1122 $widget_obj->_set( -1 ); 1123 $widget_obj->widget( $args, $instance ); 1086 1124 } 1087 1125 … … 1109 1147 global $sidebars_widgets; 1110 1148 1111 if ( ! is_array( $sidebars_widgets ) ) 1149 if ( ! is_array( $sidebars_widgets ) ) { 1112 1150 $sidebars_widgets = wp_get_sidebars_widgets(); 1113 1114 retrieve_widgets(true); 1151 } 1152 1153 retrieve_widgets( true ); 1115 1154 } 1116 1155 … … 1134 1173 $registered_widgets_ids = array_keys( $wp_registered_widgets ); 1135 1174 1136 if ( ! is_array( get_theme_mod( 'sidebars_widgets' ) ) ) 1175 if ( ! is_array( get_theme_mod( 'sidebars_widgets' ) ) ) { 1137 1176 if ( empty( $sidebars_widgets ) ) { 1138 1177 return array(); … … 1218 1257 $new_sidebars_widgets[ $sidebar ] = $existing_sidebars_widgets[ $sidebar ]; 1219 1258 unset( $existing_sidebars_widgets[ $sidebar ] ); 1220 } else 1259 } elseif ( ! array_key_exists( $sidebar, $new_sidebars_widgets ) ) { 1221 1260 $new_sidebars_widgets[ $sidebar ] = array(); 1222 1261 } … … 1342 1381 } // endif ( ! empty( $old_sidebars_widgets ) ) 1343 1382 1344 1345 1383 // Restore widget settings from when theme was previously active. 1346 1384 $new_sidebars_widgets = array_merge( $new_sidebars_widgets, $old_sidebars_widgets ); … … 1383 1421 function wp_widget_rss_output( $rss, $args = array() ) { 1384 1422 if ( is_string( $rss ) ) { 1385 $rss = fetch_feed( $rss);1386 } elseif ( is_array( $rss) && isset($rss['url']) ) {1423 $rss = fetch_feed( $rss ); 1424 } elseif ( is_array( $rss ) && isset( $rss['url'] ) ) { 1387 1425 $args = $rss; 1388 $rss = fetch_feed($rss['url']);1389 } elseif ( ! is_object($rss) ) {1426 $rss = fetch_feed( $rss['url'] ); 1427 } elseif ( ! is_object( $rss ) ) { 1390 1428 return; 1391 1429 } 1392 1430 1393 if ( is_wp_error( $rss) ) {1394 if ( is_admin() || current_user_can( 'manage_options') )1431 if ( is_wp_error( $rss ) ) { 1432 if ( is_admin() || current_user_can( 'manage_options' ) ) { 1395 1433 echo '<p><strong>' . __( 'RSS Error:' ) . '</strong> ' . $rss->get_error_message() . '</p>'; 1434 } 1396 1435 return; 1397 1436 } 1398 1437 1399 $default_args = array( 'show_author' => 0, 'show_date' => 0, 'show_summary' => 0, 'items' => 0 ); 1400 $args = wp_parse_args( $args, $default_args ); 1438 $default_args = array( 1439 'show_author' => 0, 1440 'show_date' => 0, 1441 'show_summary' => 0, 1442 'items' => 0, 1443 ); 1444 $args = wp_parse_args( $args, $default_args ); 1401 1445 1402 1446 $items = (int) $args['items']; 1403 if ( $items < 1 || 20 < $items ) 1447 if ( $items < 1 || 20 < $items ) { 1404 1448 $items = 10; 1405 $show_summary = (int) $args['show_summary']; 1406 $show_author = (int) $args['show_author']; 1407 $show_date = (int) $args['show_date']; 1408 1409 if ( !$rss->get_item_quantity() ) { 1449 } 1450 $show_summary = (int) $args['show_summary']; 1451 $show_author = (int) $args['show_author']; 1452 $show_date = (int) $args['show_date']; 1453 1454 if ( ! $rss->get_item_quantity() ) { 1410 1455 echo '<ul><li>' . __( 'An error has occurred, which probably means the feed is down. Try again later.' ) . '</li></ul>'; 1411 1456 $rss->__destruct(); 1412 unset( $rss);1457 unset( $rss ); 1413 1458 return; 1414 1459 } … … 1454 1499 if ( $show_author ) { 1455 1500 $author = $item->get_author(); 1456 if ( is_object( $author) ) {1501 if ( is_object( $author ) ) { 1457 1502 $author = $author->get_name(); 1458 1503 $author = ' <cite>' . esc_html( strip_tags( $author ) ) . '</cite>'; … … 1470 1515 echo '</ul>'; 1471 1516 $rss->__destruct(); 1472 unset( $rss);1517 unset( $rss ); 1473 1518 } 1474 1519 … … 1486 1531 */ 1487 1532 function wp_widget_rss_form( $args, $inputs = null ) { 1488 $default_inputs = array( 'url' => true, 'title' => true, 'items' => true, 'show_summary' => true, 'show_author' => true, 'show_date' => true ); 1489 $inputs = wp_parse_args( $inputs, $default_inputs ); 1533 $default_inputs = array( 1534 'url' => true, 1535 'title' => true, 1536 'items' => true, 1537 'show_summary' => true, 1538 'show_author' => true, 1539 'show_date' => true, 1540 ); 1541 $inputs = wp_parse_args( $inputs, $default_inputs ); 1490 1542 1491 1543 $args['title'] = isset( $args['title'] ) ? $args['title'] : ''; 1492 $args['url'] = isset( $args['url'] ) ? $args['url'] : '';1544 $args['url'] = isset( $args['url'] ) ? $args['url'] : ''; 1493 1545 $args['items'] = isset( $args['items'] ) ? (int) $args['items'] : 0; 1494 1546 … … 1497 1549 } 1498 1550 1499 $args['show_summary'] 1500 $args['show_author'] 1501 $args['show_date'] 1551 $args['show_summary'] = isset( $args['show_summary'] ) ? (int) $args['show_summary'] : (int) $inputs['show_summary']; 1552 $args['show_author'] = isset( $args['show_author'] ) ? (int) $args['show_author'] : (int) $inputs['show_author']; 1553 $args['show_date'] = isset( $args['show_date'] ) ? (int) $args['show_date'] : (int) $inputs['show_date']; 1502 1554 1503 1555 if ( ! empty( $args['error'] ) ) { … … 1533 1585 <?php 1534 1586 endif; 1535 foreach ( array_keys($default_inputs) as $input ) :1536 if ( 'hidden' === $inputs[$input] ) :1537 1587 foreach ( array_keys( $default_inputs ) as $input ) : 1588 if ( 'hidden' === $inputs[ $input ] ) : 1589 $id = str_replace( '_', '-', $input ); 1538 1590 ?> 1539 1591 <input type="hidden" id="rss-<?php echo esc_attr( $id ); ?>-<?php echo $esc_number; ?>" name="widget-rss[<?php echo $esc_number; ?>][<?php echo esc_attr( $input ); ?>]" value="<?php echo esc_attr( $args[ $input ] ); ?>" /> 1540 1592 <?php 1541 1593 endif; 1542 1594 endforeach; 1543 1595 } … … 1561 1613 function wp_widget_rss_process( $widget_rss, $check_feed = true ) { 1562 1614 $items = (int) $widget_rss['items']; 1563 if ( $items < 1 || 20 < $items ) 1615 if ( $items < 1 || 20 < $items ) { 1564 1616 $items = 10; 1565 $url = esc_url_raw( strip_tags( $widget_rss['url'] ) ); 1566 $title = isset( $widget_rss['title'] ) ? trim( strip_tags( $widget_rss['title'] ) ) : ''; 1567 $show_summary = isset( $widget_rss['show_summary'] ) ? (int) $widget_rss['show_summary'] : 0; 1568 $show_author = isset( $widget_rss['show_author'] ) ? (int) $widget_rss['show_author'] :0; 1569 $show_date = isset( $widget_rss['show_date'] ) ? (int) $widget_rss['show_date'] : 0; 1617 } 1618 $url = esc_url_raw( strip_tags( $widget_rss['url'] ) ); 1619 $title = isset( $widget_rss['title'] ) ? trim( strip_tags( $widget_rss['title'] ) ) : ''; 1620 $show_summary = isset( $widget_rss['show_summary'] ) ? (int) $widget_rss['show_summary'] : 0; 1621 $show_author = isset( $widget_rss['show_author'] ) ? (int) $widget_rss['show_author'] : 0; 1622 $show_date = isset( $widget_rss['show_date'] ) ? (int) $widget_rss['show_date'] : 0; 1570 1623 1571 1624 if ( $check_feed ) { 1572 $rss = fetch_feed($url);1625 $rss = fetch_feed( $url ); 1573 1626 $error = false; 1574 $link = '';1575 if ( is_wp_error( $rss) ) {1627 $link = ''; 1628 if ( is_wp_error( $rss ) ) { 1576 1629 $error = $rss->get_error_message(); 1577 1630 } else { 1578 $link = esc_url(strip_tags($rss->get_permalink())); 1579 while ( stristr($link, 'http') != $link ) 1580 $link = substr($link, 1); 1631 $link = esc_url( strip_tags( $rss->get_permalink() ) ); 1632 while ( stristr( $link, 'http' ) != $link ) { 1633 $link = substr( $link, 1 ); 1634 } 1581 1635 1582 1636 $rss->__destruct(); 1583 unset( $rss);1637 unset( $rss ); 1584 1638 } 1585 1639 }
Note: See TracChangeset
for help on using the changeset viewer.