如何通过WordPress插件ShortCoder

时间:2018-08-30 19:04:35

标签: wordpress selenium automation headless

我想这样做,以便在我的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>

1 个答案:

答案 0 :(得分:1)

编辑:

继续前进。

我将jQuery用于POST部分。

它非常简单,下面是一个示例:

<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数据库中,每个数据库都具有不同的表前缀。

 //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' );

您需要确保每个用户都有上限和级别的副本,如下所示: enter image description here

// 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 );

在这里我了解到了这一点: https://kinsta.com/blog/share-logins-wordpress/