[wp-trac] [WordPress Trac] #38031: Allow modifying args for the_widget
WordPress Trac
noreply at wordpress.org
Tue Sep 13 18:57:11 UTC 2016
#38031: Allow modifying args for the_widget
-------------------------+--------------------------------
Reporter: mnmlthms | Owner:
Type: enhancement | Status: new
Priority: normal | Milestone: Awaiting Review
Component: Widgets | Version: trunk
Severity: normal | Resolution:
Keywords: | Focuses: ui, accessibility
-------------------------+--------------------------------
Description changed by westonruter:
Old description:
> Some plugins used function the_widget outside of sidebar with default
> args, this enhancement should be added to the next version so theme
> developers can modify args
>
> Original code:
>
> {{{
> /**
> * Output an arbitrary widget as a template tag.
> *
> * @since 2.8.0
> *
> * @global WP_Widget_Factory $wp_widget_factory
> *
> * @param string $widget The widget's PHP class name (see class-wp-
> widget.php).
> * @param array $instance Optional. The widget's instance settings.
> Default empty array.
> * @param array $args {
> * Optional. Array of arguments to configure the display of the
> widget.
> *
> * @type string $before_widget HTML content that will be prepended to
> the widget's HTML output.
> * Default `<div class="widget %s">`,
> where `%s` is the widget's class name.
> * @type string $after_widget HTML content that will be appended to
> the widget's HTML output.
> * Default `</div>`.
> * @type string $before_title HTML content that will be prepended to
> the widget's title when displayed.
> * Default `<h2 class="widgettitle">`.
> * @type string $after_title HTML content that will be appended to
> the widget's title when displayed.
> * Default `</h2>`.
> * }
> */
> function the_widget( $widget, $instance = array(), $args = array() ) {
> global $wp_widget_factory;
>
> $widget_obj = $wp_widget_factory->widgets[$widget];
> if ( ! ( $widget_obj instanceof WP_Widget ) ) {
> return;
> }
>
> $default_args = array(
> 'before_widget' => '<div class="widget %s">',
> 'after_widget' => "</div>",
> 'before_title' => '<h2 class="widgettitle">',
> 'after_title' => '</h2>',
> );
> $args = wp_parse_args( $args, $default_args );
> $args['before_widget'] = sprintf( $args['before_widget'],
> $widget_obj->widget_options['classname'] );
>
> $instance = wp_parse_args($instance);
>
> /**
> * Fires before rendering the requested widget.
> *
> * @since 3.0.0
> *
> * @param string $widget The widget's class name.
> * @param array $instance The current widget instance's
> settings.
> * @param array $args An array of the widget's sidebar
> arguments.
> */
> do_action( 'the_widget', $widget, $instance, $args );
>
> $widget_obj->_set(-1);
> $widget_obj->widget($args, $instance);
> }
> }}}
>
> Enhanced
> {{{
> /**
> * Output an arbitrary widget as a template tag.
> *
> * @since 2.8.0
> *
> * @global WP_Widget_Factory $wp_widget_factory
> *
> * @param string $widget The widget's PHP class name (see class-wp-
> widget.php).
> * @param array $instance Optional. The widget's instance settings.
> Default empty array.
> * @param array $args {
> * Optional. Array of arguments to configure the display of the
> widget.
> *
> * @type string $before_widget HTML content that will be prepended to
> the widget's HTML output.
> * Default `<div class="widget %s">`,
> where `%s` is the widget's class name.
> * @type string $after_widget HTML content that will be appended to
> the widget's HTML output.
> * Default `</div>`.
> * @type string $before_title HTML content that will be prepended to
> the widget's title when displayed.
> * Default `<h2 class="widgettitle">`.
> * @type string $after_title HTML content that will be appended to
> the widget's title when displayed.
> * Default `</h2>`.
> * }
> */
> function the_widget( $widget, $instance = array(), $args = array() ) {
> global $wp_widget_factory;
>
> $widget_obj = $wp_widget_factory->widgets[$widget];
> if ( ! ( $widget_obj instanceof WP_Widget ) ) {
> return;
> }
>
> $default_args = array(
> 'before_widget' => '<div class="widget %s">',
> 'after_widget' => "</div>",
> 'before_title' => '<h2 class="widgettitle">',
> 'after_title' => '</h2>',
> );
> $args = wp_parse_args( $args, $default_args );
>
> //Allow modifying widget args via filter hook
> $args = apply_filters( 'the_widget_args', $args );
> $args['before_widget'] = sprintf( $args['before_widget'],
> $widget_obj->widget_options['classname'] );
>
> $instance = wp_parse_args($instance);
>
> /**
> * Fires before rendering the requested widget.
> *
> * @since 3.0.0
> *
> * @param string $widget The widget's class name.
> * @param array $instance The current widget instance's
> settings.
> * @param array $args An array of the widget's sidebar
> arguments.
> */
> do_action( 'the_widget', $widget, $instance, $args );
>
> $widget_obj->_set(-1);
> $widget_obj->widget($args, $instance);
> }
> }}}
New description:
Some plugins used function the_widget outside of sidebar with default
args, this enhancement should be added to the next version so theme
developers can modify args
Original code:
{{{#!php
<?php
/**
* Output an arbitrary widget as a template tag.
*
* @since 2.8.0
*
* @global WP_Widget_Factory $wp_widget_factory
*
* @param string $widget The widget's PHP class name (see class-wp-
widget.php).
* @param array $instance Optional. The widget's instance settings.
Default empty array.
* @param array $args {
* Optional. Array of arguments to configure the display of the
widget.
*
* @type string $before_widget HTML content that will be prepended to
the widget's HTML output.
* Default `<div class="widget %s">`,
where `%s` is the widget's class name.
* @type string $after_widget HTML content that will be appended to
the widget's HTML output.
* Default `</div>`.
* @type string $before_title HTML content that will be prepended to
the widget's title when displayed.
* Default `<h2 class="widgettitle">`.
* @type string $after_title HTML content that will be appended to
the widget's title when displayed.
* Default `</h2>`.
* }
*/
function the_widget( $widget, $instance = array(), $args = array() ) {
global $wp_widget_factory;
$widget_obj = $wp_widget_factory->widgets[$widget];
if ( ! ( $widget_obj instanceof WP_Widget ) ) {
return;
}
$default_args = array(
'before_widget' => '<div class="widget %s">',
'after_widget' => "</div>",
'before_title' => '<h2 class="widgettitle">',
'after_title' => '</h2>',
);
$args = wp_parse_args( $args, $default_args );
$args['before_widget'] = sprintf( $args['before_widget'],
$widget_obj->widget_options['classname'] );
$instance = wp_parse_args($instance);
/**
* Fires before rendering the requested widget.
*
* @since 3.0.0
*
* @param string $widget The widget's class name.
* @param array $instance The current widget instance's settings.
* @param array $args An array of the widget's sidebar
arguments.
*/
do_action( 'the_widget', $widget, $instance, $args );
$widget_obj->_set(-1);
$widget_obj->widget($args, $instance);
}
}}}
Enhanced
{{{#!php
<?php
/**
* Output an arbitrary widget as a template tag.
*
* @since 2.8.0
*
* @global WP_Widget_Factory $wp_widget_factory
*
* @param string $widget The widget's PHP class name (see class-wp-
widget.php).
* @param array $instance Optional. The widget's instance settings.
Default empty array.
* @param array $args {
* Optional. Array of arguments to configure the display of the
widget.
*
* @type string $before_widget HTML content that will be prepended to
the widget's HTML output.
* Default `<div class="widget %s">`,
where `%s` is the widget's class name.
* @type string $after_widget HTML content that will be appended to
the widget's HTML output.
* Default `</div>`.
* @type string $before_title HTML content that will be prepended to
the widget's title when displayed.
* Default `<h2 class="widgettitle">`.
* @type string $after_title HTML content that will be appended to
the widget's title when displayed.
* Default `</h2>`.
* }
*/
function the_widget( $widget, $instance = array(), $args = array() ) {
global $wp_widget_factory;
$widget_obj = $wp_widget_factory->widgets[$widget];
if ( ! ( $widget_obj instanceof WP_Widget ) ) {
return;
}
$default_args = array(
'before_widget' => '<div class="widget %s">',
'after_widget' => "</div>",
'before_title' => '<h2 class="widgettitle">',
'after_title' => '</h2>',
);
$args = wp_parse_args( $args, $default_args );
//Allow modifying widget args via filter hook
$args = apply_filters( 'the_widget_args', $args );
$args['before_widget'] = sprintf( $args['before_widget'],
$widget_obj->widget_options['classname'] );
$instance = wp_parse_args($instance);
/**
* Fires before rendering the requested widget.
*
* @since 3.0.0
*
* @param string $widget The widget's class name.
* @param array $instance The current widget instance's settings.
* @param array $args An array of the widget's sidebar
arguments.
*/
do_action( 'the_widget', $widget, $instance, $args );
$widget_obj->_set(-1);
$widget_obj->widget($args, $instance);
}
}}}
--
--
Ticket URL: <https://core.trac.wordpress.org/ticket/38031#comment:1>
WordPress Trac <https://core.trac.wordpress.org/>
WordPress publishing platform
More information about the wp-trac
mailing list