我想知道如何在使用 Ultimate Member 插件在 Wordpress 中提交个人资料表单之前删除输入值。我已经坚持了整整一周。
问题是我在配置文件表单中有条件字段,如果用户没有选择,他们仍然会在提交表单时保存他们的值。该插件不会有条件地从隐藏字段中删除值,如果您想使用 REST API 将这些字段发送到其他地方,这是一个问题。
我不能用 PHP 做到这一点,所以我在主体函数中添加了一个脚本来尝试清除这些值。这在用户刷新表单时起作用,但在用户使用钩子 um_after_user_updated提交表单时不起作用
function remove_before_send () {
?>
<script>
var elements = document.querySelectorAll('.um-is-conditional');
for (var i = 0; i < elements.length; i++) {
elements[i].childNodes[1].childNodes[0].value = "";
}
</script>
<?php
}
add_action('um_profile_content_main', 'remove_before_send');
编辑:感谢@JB_DELR 的评论。你真的给了我所有的线索。这是我的最终代码(我并不自豪,因为我想使用 php,但这是我能做的最好的)
function remove_before_send () {
?>
<script>
var boton = document.querySelector("div.um-left.um-half > input");
boton.addEventListener("click", function(){
var elements = document.querySelectorAll('.um-is-conditional');
for (var i = 0; i < elements.length; i++) {
if (elements[i].style.display == "none") {
elements[i].childNodes[1].childNodes[0].value = "";
}
}
});
</script>
<?php
}
add_filter( 'um_profile_content_main', 'remove_before_send');