我知道关于该错误有很多问题
调用未定义函数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";
}
?>