【问题标题】:Wordpress Contact form 7 set recipient from custom shortcodeWordpress 联系表格 7 从自定义简码设置收件人
【发布时间】:2016-09-25 14:51:25
【问题描述】:

我无法让它工作。而且似乎不可能获得有关该过程的任何真实文档。

我的 functions.php 中有一个自定义简码,它从外部 API 获取电子邮件地址。我想在 WPCF7 的“收件人”(即收件人)字段中使用此简码。但它一直给我一个“语法错误”的错误警告。

我需要找到一种方法让收件人字段接受来自我的 functions.php 文件的自定义短代码。

我试过the dynamic text plugin,但它不起作用。

这是我的简码示例

function single_email() {
    global $contact;
    return $contact->email;
}add_shortcode( 'contact_email', 'single_email' );

也许类似于使用“wpcf7_special_mail_tags”和“do_shortcode()”?不过不太确定它是如何工作的。

使用 WPCF7 4.4.2 版。

【问题讨论】:

  • 你的意思是你必须创建contact_email短代码对吗?
  • 我的错!是的,add_shortcode。我已经更正了这个问题。

标签: php wordpress shortcode contact-form-7


【解决方案1】:

您可以像这样在wp_options 表中创建新字段并像这样使用。

在您的联系人页面上

      <div class="contant">
      <div class="section">
        <div class="contact_pannel">
          <h1>You can find us literally anywhere, just push a button and we’re there</h1>
          <div class="lf_pannel">
          <form action="" method="" id='myForm'  onsubmit=" return pretendValidation();  ">
            <h2>Use this form to send us a message:</h2>
            <div class="fild">
                <label class="label">Name</label>
                <input name="Name"   type="text" class="input">
            </div>

            <div class="fild">
                <label class="label">Email</label>
                <input name="Email" type="email" class="input" required=required  >
            </div>

            <div class="fild">
                <label class="label">Company</label>
                <input name="Company" type="text" class="input">
            </div>

            <div class="fild">
                <label class="label">Subject</label>
                <input name="Subject" type="text" class="input">
            </div>

            <div class="fild">
                <label class="label">Message</label>
                <textarea class="input" style="height:90px;" id='Message'></textarea>
            </div>
                <input name="submitt" type="submit" id="submitt" style="display:none;">

            <a href="javascript:void(0);" class="send_button margin_right23" onclick="document.getElementById('mailed').style.display = 'none'; document.getElementById('submitt').click();" >Send Message</a>
          </form>

          <div class="  wpcf7-display-none " id="mailed"   role="alert">Your message was sent successfully. Thanks.</div>
          </div>

          <div class="rg_pannel">


          <?php echo html_entity_decode(  get_option('admin_address') );?>





          </div> 
        </div> 
      </div>
    </div>

    <script>
    function pretendValidation(){


    jQuery(document).ready(function($) {

        // We'll pass this variable to the PHP function example_ajax_request
        var fruit = 'Banana';
          // console.log($( "#myForm" ).serialize());
        // This does the ajax request

        $.post( "<?=get_template_directory_uri () ;?>/contact_ajax.php",
        { myForm: $( "#myForm" ).serialize(), Message: $( "#Message" ).val() },
        function( data ) {
          console.log( data ); // John

        });




         $('#myForm')[0].reset();

         $( "#mailed" ).show( "slow" );

    });
        return false;
    }
    </script>

之后你必须像这样创建 ajax 页面

contact_ajax.php

<?php

/** Load WordPress Bootstrap */
require_once  ( '../../../wp-load.php' );

// echo "1232".site_url();


// print_r($_REQUEST);

$params = array();
parse_str($_REQUEST['myForm'], $params);
$params['Message']= $_REQUEST['Message'];
// print_r($params);

$to      = get_option('your_email_field_name');
// $to      = "demo@youremail.in";
$subject = 'Fokus Tech Contact Form';
  $message = "Hello,\n"
            ."Name: ".$params ['Name']."\n"
            ."Email: ". $params ['Email']."\n"
            ."Company: ".$params ['Company']."\n"
            ."Subject: ". $params ['Subject']."\n"
            ."Message: ".$params['Message'] ."\n"

;
$headers = 'From: no-repaly@you.com' . "\r\n" .
    'Reply-To: no-repaly@you.com' . "\r\n" .
    'X-Mailer: PHP/' . phpversion();

mail($to, $subject, $message, $headers);

?>

【讨论】:

    【解决方案2】:

    你能检查下面的代码吗?

    wpcf7_add_shortcode('contact_email', 'single_email', true);
    function single_email(){
        global $contact;
        return $contact->email;
    }
    

    【讨论】:

    • 错误只是“to”字段的“语法错误”。为了更好地衡量,4.4.2 版是我当前的 WPCF 版本。
    猜你喜欢
    • 2012-10-22
    • 2016-08-06
    • 2013-09-01
    • 1970-01-01
    • 2012-09-05
    • 2016-08-16
    • 1970-01-01
    • 2012-02-14
    • 2019-11-20
    相关资源
    最近更新 更多