Vinoth Kumar
Vinoth Kumar

Reputation: 423

Override a function in WordPress

Am having a plugin, In that I need to change some text it in, but this function doesn't have hook to use.

Usually the function will be override by using remove_action() or remove_filter(). For both the function we need filter name to override. But this plugin function doesn't add any filters.

Now I need to override this function.

For example

Plugin.php in plugin

function plugin(){
    echo 'hello';
    echo 'welcome you';
}

Function.php in theme

I want to the function plugin() in plugin.php to

function theme_plugin(){
    echo 'hello';
    echo 'You are welcome';
}

There is not add_action for plugin().

How to override the plugin() to theme_plugin()?

Upvotes: 0

Views: 745

Answers (2)

Davit
Davit

Reputation: 594

Look here Redefining PHP function?, you can't override php function or overload it. You have to find another way for solving your problem.

Regards,

Upvotes: 2

eL-Prova
eL-Prova

Reputation: 1094

If am right, you can us this link: http://sltaylor.co.uk/blog/customizing-new-user-email-pluggable-function/

**** Edit**

I have no much experience with wordpress. But here is someone asking for the same: Overriding a theme function from plugin in WordPress

And the marked answer is:

Unless the function is meant to be overridden, no. This is basic PHP. You can't redefine a function. If you try you will get a fatal error.

Parts of WordPress are written to be overwritten. Look at /wp-includes/pluggable.php. Every function in there is wrapped in a if( !function_exists(...) ) conditional. Unless your theme did the same, and some do for some functions, you can't overwrite.

Look around for filters that might help you instead.

Looking at your code, you should be able to unhook that. Just make sure to hook the unhook late enough. That is not a good solution, though since you are breaking theme functionality and also must know the know the names of all the hooked functions that themes are using.

Is there something in $fragments, or in $_POST or $_GET or anything else, that you can use to conditionally run your code, leaving the rest alone.

Anyway, Wordpress is opensource, so you can change the code by yourself? Why just change the plugin?

Upvotes: 0

Related Questions