Need help with remove_action()

I’m trying to remove the unsightly embedded <STYLE> tag the built-in Recent Comments widget puts in my <HEAD>, but I can’t seem to get the syntax right. It originally calls

add_action( 'wp_head', array(&$this, 'recent_comments_style') );

to add it (in wp-includes/default-widgets.php, line 609), and I’m trying to undo it.

Read More

I think it should be something like this:

remove_action('wp_head', 'WP_Widget_Recent_Comments::recent_comments_style');

but with all the variations I’ve tried I still can’t get it right. Does anyone know how to achieve this?

Possibly Helpful:

Related posts

Leave a Reply

4 comments

  1. This is the correct code:

    add_action('wp_head', 'remove_widget_action', 1);
    function remove_widget_action() {
        global $wp_widget_factory;
    
        remove_action( 'wp_head', array($wp_widget_factory->widgets['WP_Widget_Recent_Comments'], 'recent_comments_style') );
    }
    

    However, it doesn’t work because of this bug.

  2. remove_action('wp_head', array(&$this, 'recent_comments_style'));
    

    This should work because WordPress uses the same functions to create the unique IDs whether you remove or add it.

  3. // remove old recentcomments inline style
    
    add_action( 'widgets_init', 'my_remove_recent_comments_style' );
    function my_remove_recent_comments_style() {
        global $wp_widget_factory;
        remove_action( 'wp_head', array( $wp_widget_factory->widgets['WP_Widget_Recent_Comments'], 'recent_comments_style'  ) );
    }
    

    tested. works