[wp-trac] [WordPress Trac] #38048: Weird behaviour of "add_action('wp_login', 'func')" in combination with wishlist member

WordPress Trac noreply at wordpress.org
Wed Sep 14 01:10:53 UTC 2016


#38048: Weird behaviour of "add_action('wp_login','func')" in combination with
wishlist member
--------------------------+------------------------------
 Reporter:  jobst         |       Owner:
     Type:  defect (bug)  |      Status:  new
 Priority:  normal        |   Milestone:  Awaiting Review
Component:  Plugins       |     Version:  4.6.1
 Severity:  normal        |  Resolution:
 Keywords:                |     Focuses:
--------------------------+------------------------------
Changes (by SergeyBiryukov):

 * focuses:  ui, accessibility, administration =>
 * component:  General => Plugins


Old description:

> Hi
>
> I added a ticket at wishlist as well as I cannot figure out where this
> problem is starting.
> I am also not sure when this started but I cannot see changes in the
> login time of Wishlist members - so I debugged.
>
> Wishlist adds a function to the list of hooks for wp_login in its main
> file wpm.php like so
>  add_action('wp_login', array(&$WishListMemberInstance, 'Login'));
>
> I turned off all plugins that were not needed for this and only kept the
> required ones, e.g. wishlist. woocommerce e.g.
>
> I put a line at the end of my functions.php with a marker file like so:
> add_action('wp', function(){ error_log("HERE_HERE_HERE_HERE");
> error_log(print_r($GLOBALS['wp_filter']['wp_login'],1)); exit; } );
>
> I then basically accessed the "my_account" page.
> The php log file did NOT show an entry of wishlist in the wp_login action
> hook array.
>
> I then disabled every action hook for wp_login, even mine.
> The php log file STILL did NOT show an entry of wishlist in the wp_login
> action hook array.
>
> Then I changed in the file wpm.php from
>   add_action('wp_login', array(&$WishListMemberInstance, 'Login'));
> to
>   add_action('wp_login', array(&$WishListMemberInstance, 'Login'),20,2);
>
> and sure enough it showed up, and the login time for the members changed.
>
> I looked at the function "add_action" and "add_filter" but I could not
> see anything what could prevent the login member function to be added.
>
> So is this a bug?
> Is this because of the sheer size of &$WishListMemberInstance that
> add_action does not want to do it?
>
> However, just before the class definition of WishlistMember I added a
> function called "MyTestFunction" and replaced the
> "array(&$WishListMemberInstance,'Login')" with 'MyTestFunction' and
> looked at the debug output and sure enough the function was added to the
> list of wp_login hooks.
>
> I added a ticket to wishlist as well.
>
> Jobst

New description:

 Hi

 I added a ticket at wishlist as well as I cannot figure out where this
 problem is starting.
 I am also not sure when this started but I cannot see changes in the login
 time of Wishlist members - so I debugged.

 Wishlist adds a function to the list of hooks for wp_login in its main
 file wpm.php like so
 {{{
 add_action('wp_login', array(&$WishListMemberInstance, 'Login'));
 }}}
 I turned off all plugins that were not needed for this and only kept the
 required ones, e.g. wishlist. woocommerce e.g.

 I put a line at the end of my functions.php with a marker file like so:
 {{{
 add_action('wp', function(){ error_log("HERE_HERE_HERE_HERE");
 error_log(print_r($GLOBALS['wp_filter']['wp_login'],1)); exit; } );
 }}}
 I then basically accessed the "my_account" page.
 The php log file did NOT show an entry of wishlist in the `wp_login`
 action hook array.

 I then disabled every action hook for wp_login, even mine.
 The php log file STILL did NOT show an entry of wishlist in the `wp_login`
 action hook array.

 Then I changed in the file wpm.php from
 {{{
 add_action('wp_login', array(&$WishListMemberInstance, 'Login'));
 }}}
 to
 {{{
 add_action('wp_login', array(&$WishListMemberInstance, 'Login'),20,2);
 }}}

 and sure enough it showed up, and the login time for the members changed.

 I looked at the function "add_action" and "add_filter" but I could not see
 anything what could prevent the login member function to be added.

 So is this a bug?
 Is this because of the sheer size of `&$WishListMemberInstance` that
 add_action does not want to do it?

 However, just before the class definition of WishlistMember I added a
 function called `MyTestFunction` and replaced the
 `array(&$WishListMemberInstance,'Login')` with `MyTestFunction` and looked
 at the debug output and sure enough the function was added to the list of
 wp_login hooks.

 I added a ticket to wishlist as well.

 Jobst

--

--
Ticket URL: <https://core.trac.wordpress.org/ticket/38048#comment:1>
WordPress Trac <https://core.trac.wordpress.org/>
WordPress publishing platform


More information about the wp-trac mailing list