如何从WordPress插件中的一个函数调用函数?

时间:2017-02-03 11:03:12

标签: php wordpress function filter hook

如何在管理页面中调用插件中的特定功能。 我在WordPress插件中提交表单。在提交时我想检查在表单中输入的密钥的有效性。我有一个功能,检查密钥的有效性。我想从表单的函数中调用该函数。 我尝试了一些东西,但它给了我错误 不在对象上下文中时使用$ this

这是我的代码

class WP_Cms_Plugin{

    function __construct() {
        add_action( 'admin_menu', array( $this, 'cms_options_panel' ));
    }

    function cms_options_panel() {
        add_menu_page('CMS', 'Cms', 'manage_options', 'cms-dashboard', array(__CLASS__,'cms_setting_form'), 'dashicons-building');
    }

    function cms_setting_form() 
    {

        if(isset($_POST['btn_submit']))
        {
          $secret_key = $_POST['project_secret_key'];
          if($secret_key=='' || empty($secret_key))
          {
            $error['project_secret_key'] = 'Please enter Secret Key.';
          }
          if(empty($error)){
                call to cms_check_key();
                echo "Key validated successfully";
          } 
          else 
          {
                echo "Please use proper Key";
          }
        }
        ?>
      <form method="post">
            <div>Secret Key</div>
            <input type="text" name="project_secret_key" value="<?php echo esc_attr( get_option('cms_secret_key') ); ?>" required/>
        <?php submit_button('Submit','primary','btn_submit'); ?>
      </form>

        <?php 
    }

    function cms_check_key($secret_key)
    {
        code to check validity
    }
}
$cmsservice = new WP_Cms_Plugin();

1 个答案:

答案 0 :(得分:1)

问题是你的callable指定使用WP_Cms_Plugin类而不是它的实例(对象)。

cms_options_panel功能更改为:

add_menu_page('CMS', 'Cms', 'manage_options', 'cms-dashboard', array($this,'cms_setting_form'), 'dashicons-building');

(将__CLASS__替换为$this

或尝试静态功能

static function cms_check_key($secret_key)

然后从表单中调用WP_Cms_Plugin::cms_check_key($secret_key)

PHP Static Keyword