基于JS变量创建自己的短码回显php变量

时间:2017-07-11 作者:Dandy

我正在尝试创建一个简单的快捷码,它允许我在页面上显示一个下拉列表,并根据所选选项显示特定的联系人表单。

后端的短代码:[formularze form="561,559,560" name="Form 1, Form 2, Form 3"]“form”属性是联系人表单7 ID,“name”属性是下拉列表的名称。

代码:

function formularze_func( $atts ) {
$a = shortcode_atts( array(
    \'form\' => \'\',
    \'name\' => \'\',
), $atts );

$form = $a[\'form\'];
$name = $a[\'name\'];

$ids_array = explode(\',\', $form);
$names_array = explode(\',\', $name);

$dropdown = "<select id=\\"selectForm\\">";
for($i=0;$i<count($ids_array);$i++) {
    $dropdown .= "<option value=\\"";
    $dropdown .= $i;
    $dropdown .= "\\">";
    $dropdown .= $names_array[$i];
    $dropdown .= "</option>";    
}
$dropdown .= "</select>";

$formDiv = "<div id=\\"form\\"></div>";

$formDisplay = "
         <script>
        var dropdown = document.getElementById(\\"selectForm\\");
        var value = dropdown.options[dropdown.selectedIndex].value;
        var formId = " . json_encode($ids_array(\\\\\\\\TOTALLY STUCK HERE\\\\\\\\)) . "
        document.getElementById(\\"form\\").innerHTML = \\"[contact-form-7 id=\\"formId\\"]\\";
    </script> 

";


$ready = $dropdown . $formDiv . $formDisplay;

if( count($ids_array) == count($names_array) ) {
    return $ready;
} else return "Error.";
}
add_shortcode( \'formularze\', \'formularze_func\' );
代码可能不是世界上最漂亮的,所以我很高兴有任何改进。

问题出在这里-\\\\完全卡在这里\\\\我如何将JS变量传递到那里value?

1 个回复
最合适的回答,由SO网友:Igor Sorish 整理而成

你不能为这样的改变添加逻辑。您需要使用js对用户“前端”事件做出反应。

此外,这种构造也会出错:

 document.getElementById(\\"form\\").innerHTML = \\"[contact-form-7 id=\\"formId\\"]\\";
将始终打印[contact-form-7 id=\\“formId\\”],因为js本身不能执行\\u shortcode函数。

如果要使其变得简单(无需ajax过程),您需要:

1) 使用php打印所有表单,样式为“显示:无

2) 添加onchange select事件

3) 更改选项时“显示”所需表单

打印表单的快速示例:

 $formDivs = \'\';
    forearch($ids_array as $i=>$id) {
      $formDivs .= do_shortcode("<div id=\\"form_{$i}\\" style="display: none;">[contact-form-7 id=\\"{$id}\\"]</div>");
    }

结束

相关推荐

如何混淆wp-config.php或代码

在文件中wp-config.php 它清楚地显示数据库用户名和密码那么,如何混淆wp配置。php或代码。几个页面支持软件:ioncube、php编码器或zenguard,但我不知道如何混淆wp配置。php直接示例:问题:编码器不想someone 获取代码并在其他服务器中重新设置网站。但编码器有key 用于解密wp配置。php并可以进行设置。密钥的好处是什么https://api.wordpress.org/secret-key/1.1/salt/ 在wordpress中?