如何通过 WordPress 插件 ShortCoder 在不同的网站上提交表单
How to Submit a Form on different website from WordPress plugin ShortCoder
我想这样做,以便在我的 WordPress 网站上,当新用户注册他们的帐户时,它会触发一系列事件,从而在另一个不相关的网站上注册一个新用户帐户。
在我的 WordPress 上,我使用 ProfileBuilder 插件提供注册表,并使用 Shortcoder 插件在同一页面上插入一大块 javascript。
我的计划是使用 javascript 从 DOM 获取表单输入,然后使用收集的数据以某种方式向其他网站发送请求。你能帮我解决这个问题,命名一些我需要完成这个目标的软件,或者简单地命名我正在尝试做的事情吗?我不是资深程序员,所以我没有准确的语言来描述我的问题或我想用正确的技术术语完成的任务。有人建议我使用 Selenium,但我希望无论使用何种机器,它都能正常工作;我知道 Selenium 是安装在您机器上的软件,我希望此代码在 Wordpress 站点上提交表单时自动 运行,无论我的计算机是打开还是关闭。我要添加新用户的站点也受密码保护。
这是我目前的情况:
<script src="https://cdnjs.cloudflare.com/ajax/libs/fetch/2.0.3/fetch.min.js" charset="utf-8"></script>
<script type="text/javascript">
var _username = document.getElementsByClassName('default_field_username')[0].value
var _email = document.getElementsByClassName('default_field_email')[0].value
var _password = document.getElementById('passw1').value
var _repeated_password = document.getElementById('passw2').value
var _userCredentials = {
username: _username,
email: _email,
password: _password,
repeatPassword: _repeated_password
}
function addUserToPruvan(_credHash){
// POST request to other site would go here
}
document.addEventListener("click", function(){
addUserToPruvan(_userCredentials)
})
</script>
编辑:
继续你的开始。
我会在 POST 部分使用 jQuery。
它非常简单,下面是它的外观示例:
<script src="https://github.com/jquery/jquery-dist/releases/tag/3.3.1"></script>
<script type="text/javascript">
jQuery( document ).ready(function($) {
...
$.post({
url: "api.php",
data: _userCredentials,
}).done(function(response) {
......
}).fail(function( jqXHR, textStatus ) {
......
});
...
});
</script>
上一个答案
如果您的项目允许,您可以在多个 WordPress 安装之间共享 user_table。
您需要将两个 WordPress 数据库放在一个 SQL 数据库中,每个数据库具有不同的 table 前缀。
//wp-config.php number 1
$table_prefix = 'first_';
define( 'CUSTOM_USER_TABLE', $table_prefix . 'users' );
define( 'CUSTOM_USER_META_TABLE', $table_prefix . 'usermeta' );
//wp-config.php number 2
$table_prefix = 'second_';
define( 'CUSTOM_USER_TABLE', 'first_users' );
define( 'CUSTOM_USER_META_TABLE', 'first_usermeta' );
您需要确保每个用户都有上限和级别的副本,如下所示:
// automatically copy caps and level across from 1 to 2
// repeat to do 2 to 1
function ksu_save_role( $user_id, $role ) {
$prefix_1 = 'first_';
$prefix_2 = 'second_';
$caps = get_user_meta( $user_id, $prefix_1 . 'capabilities', true );
$level = get_user_meta( $user_id, $prefix_1 . 'user_level', true );
if ( $caps )
update_user_meta( $user_id, $prefix_2 . 'capabilities', $caps );
if ( $level )
update_user_meta( $user_id, $prefix_2 . 'user_level', $level );
}
add_action( 'set_user_role', 'ksu_save_role', 10, 2 );
我想这样做,以便在我的 WordPress 网站上,当新用户注册他们的帐户时,它会触发一系列事件,从而在另一个不相关的网站上注册一个新用户帐户。
在我的 WordPress 上,我使用 ProfileBuilder 插件提供注册表,并使用 Shortcoder 插件在同一页面上插入一大块 javascript。
我的计划是使用 javascript 从 DOM 获取表单输入,然后使用收集的数据以某种方式向其他网站发送请求。你能帮我解决这个问题,命名一些我需要完成这个目标的软件,或者简单地命名我正在尝试做的事情吗?我不是资深程序员,所以我没有准确的语言来描述我的问题或我想用正确的技术术语完成的任务。有人建议我使用 Selenium,但我希望无论使用何种机器,它都能正常工作;我知道 Selenium 是安装在您机器上的软件,我希望此代码在 Wordpress 站点上提交表单时自动 运行,无论我的计算机是打开还是关闭。我要添加新用户的站点也受密码保护。
这是我目前的情况:
<script src="https://cdnjs.cloudflare.com/ajax/libs/fetch/2.0.3/fetch.min.js" charset="utf-8"></script>
<script type="text/javascript">
var _username = document.getElementsByClassName('default_field_username')[0].value
var _email = document.getElementsByClassName('default_field_email')[0].value
var _password = document.getElementById('passw1').value
var _repeated_password = document.getElementById('passw2').value
var _userCredentials = {
username: _username,
email: _email,
password: _password,
repeatPassword: _repeated_password
}
function addUserToPruvan(_credHash){
// POST request to other site would go here
}
document.addEventListener("click", function(){
addUserToPruvan(_userCredentials)
})
</script>
编辑:
继续你的开始。
我会在 POST 部分使用 jQuery。
它非常简单,下面是它的外观示例:
<script src="https://github.com/jquery/jquery-dist/releases/tag/3.3.1"></script>
<script type="text/javascript">
jQuery( document ).ready(function($) {
...
$.post({
url: "api.php",
data: _userCredentials,
}).done(function(response) {
......
}).fail(function( jqXHR, textStatus ) {
......
});
...
});
</script>
上一个答案
如果您的项目允许,您可以在多个 WordPress 安装之间共享 user_table。
您需要将两个 WordPress 数据库放在一个 SQL 数据库中,每个数据库具有不同的 table 前缀。
//wp-config.php number 1
$table_prefix = 'first_';
define( 'CUSTOM_USER_TABLE', $table_prefix . 'users' );
define( 'CUSTOM_USER_META_TABLE', $table_prefix . 'usermeta' );
//wp-config.php number 2
$table_prefix = 'second_';
define( 'CUSTOM_USER_TABLE', 'first_users' );
define( 'CUSTOM_USER_META_TABLE', 'first_usermeta' );
您需要确保每个用户都有上限和级别的副本,如下所示:
// automatically copy caps and level across from 1 to 2
// repeat to do 2 to 1
function ksu_save_role( $user_id, $role ) {
$prefix_1 = 'first_';
$prefix_2 = 'second_';
$caps = get_user_meta( $user_id, $prefix_1 . 'capabilities', true );
$level = get_user_meta( $user_id, $prefix_1 . 'user_level', true );
if ( $caps )
update_user_meta( $user_id, $prefix_2 . 'capabilities', $caps );
if ( $level )
update_user_meta( $user_id, $prefix_2 . 'user_level', $level );
}
add_action( 'set_user_role', 'ksu_save_role', 10, 2 );