Support » Plugin: WP Better Emails » Mis-use of Contextual Help action function

  • Hello,

    Wanted to inform you of a conflict with your plugin which I logged on Buddypress but wanted to raise with you for improvement of your plugin.
    https://buddypress.trac.wordpress.org/ticket/6848#ticket

    With your implementation of the contextual_help action hook you’re replacing any existing information for the default Overview tab. Would suggest instead utilizing the add_help_tab function to create a custom help tab for your plugin to avoid overriding other plugins/functions using the contextual_help and also being affected by other plugins like Buddypress in this case.

    Existing implementation;

    add_filter( 'contextual_help',      array( $this, 'contextual_help' ), 10, 3 );
    /**
     * Help on template variables in contextual help
     *
     * @since 0.2
     * @global string $page
     * @param string $contextual_help
     * @param string $screen_id
     * @param string $screen
     */
    function contextual_help( $contextual_help, $screen_id, $screen ) {
    	if ( ! $this->is_wpbe_page() ) {
    		return $contextual_help;
    	}
    
    	return '<p>' . __( 'Some dynamic tags can be included in your email template :', 'wp-better-emails' ) . '</p>
    			<ul>
    				<li>' . __( '<strong>%content%</strong> : will be replaced with the message content.', 'wp-better-emails' ) . '<br />
    				<span class="description"> ' . __( 'NOTE: The content tag is <strong>required</strong>, WP Better Emails will be automatically desactivated if no content tag is found.', 'wp-better-emails' ) . '</span></li>
    				<li>' . __( '<strong>%blog_url%</strong> : will be replaced with your blog URL.', 'wp-better-emails' ) . '</li>
    				<li>' . __( '<strong>%home_url%</strong> : will be replaced with your home URL.', 'wp-better-emails' ) . '</li>
    				<li>' . __( '<strong>%blog_name%</strong> : will be replaced with your blog name.', 'wp-better-emails' ) . '</li>
    				<li>' . __( '<strong>%blog_description%</strong> : will be replaced with your blog description.', 'wp-better-emails' ) . '</li>
    				<li>' . __( '<strong>%admin_email%</strong> : will be replaced with admin email.', 'wp-better-emails' ) . '</li>
    				<li>' . __( '<strong>%date%</strong> : will be replaced with current date, as formatted in <a href="options-general.php">general options</a>.', 'wp-better-emails' ) . '</li>
    				<li>' . __( '<strong>%time%</strong> : will be replaced with current time, as formatted in <a href="options-general.php">general options</a>.', 'wp-better-emails' ) . '</li>
    			</ul>';
    }

    More appropriate implementation w/ use of add_help_tab;

    add_filter( 'contextual_help',      array( $this, 'contextual_help' ), 10, 3 );
    /**
     * Help on template variables in contextual help
     *
     * @since 0.2
     * @global string $page
     * @param string $contextual_help
     * @param string $screen_id
     * @param string $screen
     */
    function contextual_help( $contextual_help, $screen_id, $screen ) {
    	if ( ! $this->is_wpbe_page() ) {
    		return $contextual_help;
    	}
    
    	$help_content = '<p>' . __( 'Some dynamic tags can be included in your email template :', 'wp-better-emails' ) . '</p>
    			<ul>
    				<li>' . __( '<strong>%content%</strong> : will be replaced with the message content.', 'wp-better-emails' ) . '<br />
    				<span class="description"> ' . __( 'NOTE: The content tag is <strong>required</strong>, WP Better Emails will be automatically desactivated if no content tag is found.', 'wp-better-emails' ) . '</span></li>
    				<li>' . __( '<strong>%blog_url%</strong> : will be replaced with your blog URL.', 'wp-better-emails' ) . '</li>
    				<li>' . __( '<strong>%home_url%</strong> : will be replaced with your home URL.', 'wp-better-emails' ) . '</li>
    				<li>' . __( '<strong>%blog_name%</strong> : will be replaced with your blog name.', 'wp-better-emails' ) . '</li>
    				<li>' . __( '<strong>%blog_description%</strong> : will be replaced with your blog description.', 'wp-better-emails' ) . '</li>
    				<li>' . __( '<strong>%admin_email%</strong> : will be replaced with admin email.', 'wp-better-emails' ) . '</li>
    				<li>' . __( '<strong>%date%</strong> : will be replaced with current date, as formatted in <a href="options-general.php">general options</a>.', 'wp-better-emails' ) . '</li>
    				<li>' . __( '<strong>%time%</strong> : will be replaced with current time, as formatted in <a href="options-general.php">general options</a>.', 'wp-better-emails' ) . '</li>
    			</ul>';
    
        $screen->add_help_tab( array(
            'id'      => 'help-wp-better-emails',
            'title'   => 'Template Tags',
            'content' => $help_content,
        ));
    
        return $contextual_help;
    }

    With this implementation we avoid any conflicts introduced by other plugins or theme functions.

    Or if you’re taking the time to update the implementation may want to deprecate this contextual_help action hook approach for the WPScreen approach as described here;
    https://codex.wordpress.org/Adding_Contextual_Help_to_Administration_Menus

    All the best,
    Cheers

    https://wordpress.org/plugins/wp-better-emails/

  • The topic ‘Mis-use of Contextual Help action function’ is closed to new replies.