个性化阅读
专注于IT技术分析

add_action在另一个函数中无法正常工作,需要管理员通知

我创建了自定义的divi模块, 然后将其转换为插件。现在, 我仅在激活Divi主题时才想激活插件。当我以这种方式编写代码时, 每次都会显示通知。

function my_admin_notice(){
    echo '<div class="updated">
       <p>test Admin notice.</p>
    </div>';
}
add_action('admin_notices', 'my_admin_notice');

但是当我用基于条件的代码编写代码时

    function angelleye_setup_For_paypal_divi_install()
    {    
        if (function_exists('et_setup_theme')) {
            // Divi is the current theme or the active theme's parent.
            // trigger our function that registers PayPal for Divi plugin.     
            angelleye_setup_for_paypal_divi();          
        }
        else{
             // code when theme is not activated.
             add_action('admin_notices', 'my_admin_notice');
        }            
    }
    register_activation_hook( __FILE__, 'angelleye_setup_For_paypal_divi_install' );

 function my_admin_notice(){
        echo '<div class="updated">
           <p>test Admin notice.</p>
        </div>';
    }

我在这里复制了用于显示管理员通知的代码https://wptheming.com/2011/08/admin-notices-in-wordpress/

现在, 我在函数angelleye_setup_For_paypal_divi_install中调用add_action, 但是在函数add_action无法正常工作。


#1


你在错误的位置添加条件。请从这里删除条件。

/**
 * The code that runs during plugin activation.
  * 
  */
function angelleye_setup_For_paypal_divi_install()
{   

angelleye_setup_for_paypal_divi();

} 
      register_activation_hook( __FILE__, 'angelleye_setup_For_paypal_divi_install' );

激活功能后添加此代码以显示管理员通知

/* Display a notice that can be dismissed */
function my_custom_notice() {
 ?>
 <div class="update-nag notice">
  <p><?php _e( 'Please install Divi theme to use PayPal Divi Module!', 'angelleye_paypal_divi' ); ?></p>
 </div>
 <?php
}
$theme = wp_get_theme();
if($theme != 'Divi' ) {
 add_action( 'admin_notices', 'my_custom_notice' );
}

#2


你的代码的问题在于, 你缺少https://codex.wordpress.org/Plugin_API/Action_Reference/admin_notices中提到的管理员通知{class}和{message}的两个要求

尝试

function angelleye_setup_For_paypal_divi_install()
{    
    if (function_exists('et_setup_theme')) {
        // Divi is the current theme or the active theme's parent.
        // trigger our function that registers PayPal for Divi plugin.     
        angelleye_setup_for_paypal_divi();          
    }
    else{
         // code when theme is not activated.
         add_action( 'admin_notices', 'sample_admin_notice__success' );
    }            
}
register_activation_hook( __FILE__, 'angelleye_setup_For_paypal_divi_install' );

function sample_admin_notice__success() {
    ?>
    <div class="notice notice-success is-dismissible">
        <p><?php _e( 'Done!', 'sample-text-domain' ); ?></p>
    </div>
    <?php
}
赞(0) 打赏
未经允许不得转载:srcmini » add_action在另一个函数中无法正常工作,需要管理员通知
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

觉得文章有用就打赏一下文章作者

微信扫一扫打赏