调用未定义函数add_action()-带有Widget的Wordpress-plugin

时间:2019-06-01 14:31:18

标签: php wordpress widget

我知道关于该错误有很多问题

  

调用未定义函数add_action()

但是这些答案都没有帮助我。我正在为WordPress编写插件,其中包括联系表单的小部件。如果用户已登录,它将显示在边栏中。用户必须将其数据放入表格中,然后提交,它将向我发送一封包含其内容的电子邮件。

我的widget.php包含输入表单,当我单击“提交”按钮时,它将带我到我的send.php,我想在其中使用功能wp_get_current_user()。我把它放在一个函数中,因为没有它会给我和以前一样的错误。我使用此功能来获取user_login和user_email以便自动将其放入电子邮件中。

我知道我的wp_get_current_user()函数正在pluggable.php之前加载。

因此,我尝试将pluggable.php放在wp_get_current_user之前,这没有用。然后,我读到可以在表单中使用action='admin-post.php'并用name='action' type='hidden' value='something'放置隐藏的输入,并将其添加到钩子中,函数将其重定向到send.php。好吧,它也没有用..

如果有人能告诉我我在哪里犯错误,我将感到非常高兴。

widget.php:

<?php

function widget( $args, $instance )
{
    if (is_user_logged_in())
    {
        <form id='form_logged_in' action="<?php echo plugin_dir_url(__FILE__) . 'send.php' ?>" method='POST' class='ajax_logged_in'>  
             <input type="text" name="subject_logged_in" id="subject_logged_in" placeholder="Betreff">          
             <textarea id="message_logged_in" name="message_logged_in" placeholder="Deine Nachricht..."></textarea>
             <div id="answer_logged_in"></div>
             <button type="submit" id="submit_logged_in">Absenden!</button>
        </form>
        <?php       

    }
}
function kontaktformular_symbol_widget() {
    register_widget( 'symbol_widget' );
}

add_action( 'widgets_init', 'kontaktformular_symbol_widget' );

send.php:

<?php

if(isset($_POST['subject_logged_in'], $_POST['message_logged_in']))
{      
       function getUser() 
       {
            global $user;
            wp_get_current_user();
            echo $user->user_login;
       }
       add_action('plugins_loaded', 'getUser'); 

 /*    $subject = $_POST['subject_logged_in'];
       $message = $_POST['message_logged_in'];

       $mailTo = "Vero@localhost";
       $headers = 'From: ' . $user->user_email;
       $body = "Du hast eine Nachricht von " . $user->user_email " erhalten" . "\n\n" . $message;

       mail($mailTo, $subject, $body, $headers);  
       echo "Vielen Dank für deine Nachricht! log in";        
}
?>

0 个答案:

没有答案