WordPress получает атрибут из шорткода на странице

Я создаю плагин для контактной формы WordPress, который выводит простую контактную форму при использовании шорткода. Шорткод имеет атрибут recipient_email это адрес электронной почты, на который пользователь хотел бы, чтобы все электронные письма переходили из формы. Я пытаюсь получить значение для электронной почты получателя в моем файле php mailer.

Это HTML, выводимый моим шорткодом с его атрибутами:

extract(shortcode_atts(array(
'el_class' => '',
'title' => '',
'subtitle' => '',
'recipient_email' => '',
), $atts));

$el_class = $this->getExtraClass($el_class);
$css_class = apply_filters(VC_SHORTCODE_CUSTOM_CSS_FILTER_TAG,$el_class, $this->settings['base']);
$subtitle = '<legend>'.$subtitle.'</legend>';

$output .= '<div class="contact-form '.$css_class.'" >';
$output .= '<h4 class="form-title">'.$title.'</h4>';

$output .=  '<div id="contact">

<div id="message"></div>

<form method="post" action="'. VCPB_PLUGIN_URL . 'contact.php' .'" name="contactform" id="contactform">

<fieldset>';

$output .= $subtitle;

$output .= '<label for="name" accesskey="U"><span class="required">*</span> Your Name</label>
<input name="name" type="text" id="name" size="30" value="" />

<br />
<label for="email" accesskey="E"><span class="required">*</span> Email</label>
<input name="email" type="text" id="email" size="30" value="" />

<br />
<label for="phone" accesskey="P"><span class="required">*</span> Phone</label>
<input name="phone" type="text" id="phone" size="30" value="" />

<br />
<label for="comments" accesskey="C"><span class="required">*</span> Your message</label>
<textarea name="comments" cols="40" rows="5" id="comments" style="width: 350px;"></textarea>

<p><span class="required">*</span> Are you human?</p>

<label for="verify" accesskey="V">&nbsp;&nbsp;&nbsp;3 + 1 =</label>
<input name="verify" type="text" id="verify" size="4" value="" style="width: 30px;" /><br /><br />

<input type="submit" class="submit" id="submit" value="Submit" />';
$output .= '</fieldset>

</form>

</div>';
$output .= '</div>'; /* END .contact-form */
return $output;

Как видите, информация из формы отправляется на contact.php который обрабатывает форму и отправляет ее по электронной почте.

Вот основная часть из моего файла php mailer (contact.php):

$address = "$recipient_email";
$e_subject = 'You\'ve been contacted by ' . $name . '.';
$e_body = "You have been contacted by $name, their message is as follows." . PHP_EOL . PHP_EOL;
$e_content = "\"$comments\"" . PHP_EOL . PHP_EOL;
$e_reply = "You can contact $name via email, $email or via phone $phone";

$msg = wordwrap( $e_body . $e_content . $e_reply, 70 );

$headers = "From: $email" . PHP_EOL;
$headers .= "Reply-To: $email" . PHP_EOL;
$headers .= "MIME-Version: 1.0" . PHP_EOL;
$headers .= "Content-type: text/plain; charset=utf-8" . PHP_EOL;
$headers .= "Content-Transfer-Encoding: quoted-printable" . PHP_EOL;

if(mail($address, $e_subject, $msg, $headers)) {

// Email has sent successfully, echo a success page.

echo "<fieldset>";
echo "<div id='success_page'>";
echo "<h1>Email Sent Successfully.</h1>";
echo "<p>Thank you <strong>$name</strong>, your message has been submitted to us.</p>";
echo "</div>";
echo "</fieldset>";

} else {
echo 'ERROR!';
}

Верхняя строка здесь — это то, что я пытаюсь исправить:

$address = "$recipient_email";

я хочу $recipient_email быть значением, которое вводится в шорткод. Может кто-нибудь помочь мне понять, как я это сделаю?

0

Решение

Два способа сделать это
либо отправьте получателя скрытым типом ввода (что не является хорошим вариантом)

или же

поместите действие формы на той же странице, а не на contact.php
на той же странице вы можете использовать shortcode_atts, чтобы получить receient_email

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]