[wp-trac] [WordPress Trac] #18405: Check if pluggable function was already defined by other plugin
WordPress Trac
wp-trac at lists.automattic.com
Mon Aug 15 01:42:30 UTC 2011
#18405: Check if pluggable function was already defined by other plugin
-------------------------+------------------------------
Reporter: F J Kaiser | Owner:
Type: enhancement | Status: new
Priority: normal | Milestone: Awaiting Review
Component: Plugins | Version:
Severity: normal | Resolution:
Keywords: |
-------------------------+------------------------------
Old description:
> Currently there's no way to check if a pluggable function is already
> defined by some other plugin in a normal single site WP installation.
>
> With the current design "pluggables" are only ''really pluggable'' for
> your own installations. Hosting a plugin the redefines a pluggable
> function in the official repository will only lead to lots of problems
> and unsatisfied/angry users that run into non-debugable errors.
>
> The problem is that there's no standartized way to check if the function
> was already defined. Imho there ''should'' be a hook to allow for save
> checking if the function was defined and then throw something like a
> {{
> _doing_it_wrong();
> }}
> -message, visible only for developers.
>
> Sample plugin (for a multisite installation) to test and discuss this.
>
> {{{
> /*
> Plugin Name: ___Pluggable Test
> Plugin URI: ___
> Description: ___
> Author: ___
> Author URI: ___
> Version: 0.1
> License: ___
> */
> function wp_rand( $min = 0, $max = 0 )
> {
> return 'I am just a test';
> }
>
> function trac_test_the_hook()
> {
> $title = 'pluggable test output';
>
> $msg = 'The current filter is "'.current_filter().'" and
> works.';
> if ( function_exists( 'wp_rand' ) )
> $msg .= '<br />The function <em>"wp_rand()"</em> was
> already defined elsewhere.';
>
> wp_die( $msg, $title );
> }
> // Change the 'muplugins_loaded' to test other hooks
> add_action( 'muplugins_loaded', 'trac_test_the_hook', 999 );
> }}}
>
> [1] {wp-hackers thread|https://groups.google.com/forum/?hl=de#!topic/wp-
> hackers/-EJbmkdMLjg]
New description:
Currently there's no way to check if a pluggable function is already
defined by some other plugin in a normal single site WP installation.
With the current design "pluggables" are only ''really pluggable'' for
your own installations. Hosting a plugin the redefines a pluggable
function in the official repository will only lead to lots of problems and
unsatisfied/angry users that run into non-debugable errors.
The problem is that there's no standartized way to check if the function
was already defined. Imho there ''should'' be a hook to allow for save
checking if the function was defined and then throw something like a
{{{
_doing_it_wrong();
}}}
-message, visible only for developers.
Sample plugin (for a multisite installation) to test and discuss this.
{{{
/*
Plugin Name: ___Pluggable Test
Plugin URI: ___
Description: ___
Author: ___
Author URI: ___
Version: 0.1
License: ___
*/
function wp_rand( $min = 0, $max = 0 )
{
return 'I am just a test';
}
function trac_test_the_hook()
{
$title = 'pluggable test output';
$msg = 'The current filter is "'.current_filter().'" and works.';
if ( function_exists( 'wp_rand' ) )
$msg .= '<br />The function <em>"wp_rand()"</em> was
already defined elsewhere.';
wp_die( $msg, $title );
}
// Change the 'muplugins_loaded' to test other hooks
add_action( 'muplugins_loaded', 'trac_test_the_hook', 999 );
}}}
[1] {wp-hackers thread|https://groups.google.com/forum/?hl=de#!topic/wp-
hackers/-EJbmkdMLjg]
--
Comment (by dd32):
See also: #8833 - Pluggable functions shouldn't really be needed, instead,
all pluggable functions should be a filter set.
--
Ticket URL: <http://core.trac.wordpress.org/ticket/18405#comment:1>
WordPress Trac <http://core.trac.wordpress.org/>
WordPress blogging software
More information about the wp-trac
mailing list