如何在点击快捷码中的链接后通过MODEL注册用户?

时间:2017-07-04 作者:LarryG001

我对PHP有相当的了解,但对WordPress还是比较陌生的。

在以前的一个只支持HTML/PHP/JS的网站上,我有一个PHP脚本,可以查询MySQL DB表并列出条目(带有日期和位置的研讨会)。

对于每个列出的研讨会,都有一个指向注册表的链接(弹出窗口)。这一切都很顺利。

现在,我想在一个基于WP的网站上做同样的事情,将研讨会列表嵌入到WP页面中。我已经成功地将一个短代码嵌入到所述WP页面中。此短代码调用的函数与上面提到的PHP脚本完全相同。

那部分很好用。我得到了与研讨会及其相应的注册表链接列表。

但现在我陷入了下一步:如何在点击通过快捷码生成的链接时弹出注册表?

也许短码路线不适合这种努力?

如有任何提示/建议/指示,我将不胜感激。

提前谢谢。拉里。

短代码调用的PHP摘录:

   function golwebdes_seminar_output () {

include(\'golwebdes_conf.inc.php\');

setlocale(LC_TIME, \'de_DE.utf8\');

global $wpdb;

$seminare = $seminare_gki;

if (isset($_GET[\'semid\'])) { // Einzelseminar
    $sql = "SELECT * FROM ".$seminare." WHERE id=".$_GET[\'semid\'];
    $result = $wpdb->get_row($sql) or die(mysql_error());
    $html = \'<div class="container-fluid">\';

    $kateg = $result->kategorie;
    $html .= \'<div class="col-sm-12"><div class="row" style="margin-bottom:3%;">
    <div class="col-sm-3">
    <img src="/pics/icon-workshops-indien.gif" alt="" class="img-responsive">
    </div>
    <div class="col-sm-9" style="padding-left:3%;">\';
    $html .= \'<p><span class="small">\'.$seminarkategorien[$kateg].\'</span><br><span style="font-weight:bold;">\'.$result->titel.\'</span></p>\';
    $html .= \'<p>\'.$result->kurzinfo.\'</p>\';
    $html .= \'<p>\'.$result->beschreibung.\'</p>\';
    $html .= \'<p>\'.$result->inhalt.\'</p>\';


    /**** BEGINN - Erzeugen der Termine: Ort Datum Anmeldelink ***/
    $termine=\'\';

    /* 1 */
    if ($result->ort1!=\'\')
        $ort1 = $result->ort1;

    if ($result->datum_beginn1!=0) {
        if ($result->datum_ende1!=0) {
            if (date("m",$result->datum_beginn1) == date("m",$result->datum_ende1))
                $datum1 = date("j.",$result->datum_beginn1)."/".date("j.",$result->datum_ende1).strftime(" %B %Y", strtotime(date("m/d/Y", $result->datum_beginn1)));
            }
        else 
            $datum1 = date("j.",$result->datum_beginn1).strftime(" %B %Y", strtotime(date("m/d/Y", $result->datum_beginn1)));
        }
    else
        $datum1 = "Termin folgt.";

    if ($result->datum_ende1 !=0 && $result->datum_ende1 >= time())
        $termin1 = "<strong>".$ort1."</strong> ".$datum1." <a href=\\"#\\" class=\\"anmeldung\\" onclick=\\"window.open(\'seminaranmeldung.php?s=".$result->id."&o=1\',\'anmeldung\',\'\').focus();return false;\\" >zur Anmeldung</a>";
    else if ($result->datum_ende1 ==0 && $result->datum_beginn1 !=0 && $result->datum_beginn1 >= time())
        $termin1 = "<strong>".$ort1."</strong> ".$datum1." <a href=\\"#\\" onclick=\\"window.open(\'seminaranmeldung.php?s=".$result->id."&o=1\',\'anmeldung\',\'\').focus();return false;\\" class=\\"anmeldung\\">zur Anmeldung</a>";
    else if ($result->datum_beginn1 ==0)
        $termin1 = $ort1." ".$datum1;

    $termine = $termine.$termin1.\'<br>\';


    /* 2 */
    if ($result->ort2!=\'\')
        $ort2 = $result->ort2;

    if ($result->datum_beginn2!=0) {
        if ($result->datum_ende2!=0) {
            if (date("m",$result->datum_beginn2) == date("m",$result->datum_ende2))
                $datum2 = date("j.",$result->datum_beginn2)."/".date("j.",$result->datum_ende2).strftime(" %B %Y", strtotime(date("m/d/Y", $result->datum_beginn2)));
            }
        else 
            $datum2 = date("j.",$result->datum_beginn2).strftime(" %B %Y", strtotime(date("m/d/Y", $result->datum_beginn2)));
        }
    else
        $datum2 = "Termin folgt.";

    if ($result->datum_ende2 !=0 && $result->datum_ende2 >= time())
        $termin2 = "<strong>".$ort2."</strong> ".$datum2." <a href=\\"#\\" class=\\"anmeldung\\" onclick=\\"window.open(\'seminaranmeldung.php?s=".$result->id."&o=2\',\'anmeldung\',\'\').focus();return false;\\"  >zur Anmeldung</a>";
    else if ($result->datum_ende2 ==0 && $result->datum_beginn2 !=0 && $result->datum_beginn2 >= time())
        $termin2 = "<strong>".$ort2."</strong> ".$datum2." <a href=\\"#\\" class=\\"anmeldung\\" onclick=\\"window.open(\'seminaranmeldung.php?s=".$result->id."&o=2\',\'anmeldung\',\'\').focus();return false;\\"  >zur Anmeldung</a>";
    else if ($result->datum_beginn2 ==0)
        $termin2 = $ort2." ".$datum2;


    $termine = $termine.$termin2.\'<br>\';

1 个回复
SO网友:Johansson

你想做的事情可以通过两个步骤来实现。首先,创建一个注册表,然后将响应发送到服务器并创建用户。

既然你有JS和HTML的技能,我就直接谈正事。下面是一份非常简单的注册表。您将暂时将此表单设置为隐藏。

登记表

<div id="ajax-register-modal">
    <input type="text" id="ajax-username" placeholder="<?php _e( \'Username\', \'text-domain\' ); ?>"/>
    <input type="password" id="ajax-password" placeholder="<?php _e( \'Password\', \'text-domain\' ); ?>"/>
    <span id="register-modal-send"><?php _e( \'Register\', \'text-domain\' ); ?></span>
</div>
然后,当您单击该链接时,jQuery将使其可见。

jQuery(\'#YourLinkID\').click(function($){
    $(\'#ajax-register-modal\').toggle();
});
所以当我们点击链接时,它会弹出。现在,我们在用户单击register按钮时发送数据。

让我们将一个操作绑定到按钮:

jQuery(\'#register-modal-send\').click(function($){
    registerTheUser();
});
服务器端注册现在AJAX处理程序:

function registerTheUser(){
    // Get the field values for username and password
    var username = $(\'#ajax-username\').val();
    var password = $(\'#ajax-password\').val();
    // Send them to server via AJAX
    jQuery.ajax({
        type: \'GET\',
        url: \'REST URL HERE\',
        data: { ajaxUsername: username , ajaxPassword: password},
    });
}
但是等等,数据会去哪里?最后一个阶段是在后端创建一个REST处理程序,以处理注册。我们只需创建一个REST路由并注册用户。

add_action( \'rest_api_init\', function () {
    //Path to REST route for registration
    register_rest_route( \'LarryG001/v2\', \'/ajax_registration/\', array(
            \'methods\' => \'GET\', // I suggest using POST
            \'callback\' => \'register_the_user\' // Callback PHP function
    ) );
});
好了,开始注册吧!

function register_the_user(){
    // Get the username and password
    $username = $_GET[\'ajaxUsername\'];
    $password = $_GET[\'ajaxPassword\'];
    // A basic creation of user based on username and password. Email is optional
    $id = wp_create_user( $username, $password, $email );
    // Return the ID of the new user
    return $id;
}
还记得AJAX调用中的URL吗?这是我们应该在那里使用的,因为我们的请求指向以下URL:

http://example.com/wp-json/LarryG001/v2/ajax_registration/
完成。我们刚刚使用创建了一个新用户wp_create_user 作用

这里我省略了很多内容,例如检查值是否已设置(通过使用if(isset($_GET[\'ajaxUsername\']) ).

返回数据后,可以将其用作AJAX响应。

结束

相关推荐

Onepage with shortcodes

我构建了一个单页wordpress主题,为了在一个页面中显示我的所有页面,我使用了一个循环,但短代码不起作用(例如:联系表单7:表单正在显示但根本不起作用)。这是我的代码: <?php /* Template Name: Pulse one page */ $this_page = $post->ID; ge