如何在functions.php中为自定义表单正确创建链接

我正在尝试在functions.php中创建自己的表单。我已经做了大量研究, 发现使用Post / Redirect / Get做表单最安全, 以避免重新提交POST请求。一切正常。表单发送POST, 操作文件处理所有内容, 将其保存到SESSION中, 然后将其重定向回。表单在页面上:http://plovarnaluhacovice.icreation.cz/my-account/zustatek-kreditu/

但是我的问题是我不希望链接”发送”具有链接:http://plovarnaluhacovice.icreation.cz/wp-content/themes/Divi_Child/process.php, 但是http://plovarnaluhacovice.icreation出于安全原因, .cz / my-account / zustatek-kreditu / process.php。

为了使它有点复杂, 我使用了WooCommerce插件, 并将此页面(/ zustatek-kreditu /)添加到WooCommerce”我的帐户”页面菜单(照片)。

在此处输入图片说明

形成:

<form action="http://plovarnaluhacovice.icreation.cz/wp-content/themes/Divi_Child/process.php" method="post">

<p>Uživatelské jméno: <br><input type="text" name="username" /></p>

<p>Heslo: <br><input type="password" name="password" /></p>

<br><button type="submit" name="save">Přidat</button>

</form>

文件结构:

wp-content / themes / 1. Divi_Child 2. functions.php 3. process.php

自定义WooCommerce菜单:

//ZŮSTATEK KREDITU

// ------------------

// 1. Register new endpoint to use for My Account page

// Note: Resave Permalinks or it will give 404 error

function zustatek_kreditu_endpoint() {

add_rewrite_endpoint( 'zustatek-kreditu', EP_ROOT | EP_PAGES );

}

add_action( 'init', 'zustatek_kreditu_endpoint' );

// ------------------

// 2. Add new query var

function zustatek_kreditu_query_vars( $vars ) {

$vars[] = 'zustatek-kreditu';

return $vars;

}

add_filter( 'query_vars', 'zustatek_kreditu_query_vars', 0 );

// ------------------

// 3. Insert the new endpoint into the My Account menu

function zustatek_kreditu_link_my_account( $items ) {

$items['zustatek-kreditu'] = 'Zůstatek kreditu';

return $items;

}

add_filter( 'woocommerce_account_menu_items', 'zustatek_kreditu_link_my_account' );

// ------------------

// 4. Add content to the new endpoint

?>

<form action="http://plovarnaluhacovice.icreation.cz/wp-content/themes/Divi_Child/process.php" method="post">

<p>Uživatelské jméno: <br><input type="text" name="username" /></p>

<p>Heslo: <br><input type="password" name="password" /></p>

<br><button type="submit" name="save">Přidat</button>

</form>

<?php

add_action( 'woocommerce_account_zustatek-kreditu_endpoint', 'hlavniMetoda' );

process.php文件:

<?php

require_once __DIR__ . '/../../../wp-config.php';

global $wp;

global $wpdb;

$current_user_id = wp_get_current_user()->ID;

if (isset($_POST['save'])) {

if($current_user_id > 0) {

$username = $_POST['username'];

$password = $_POST['password'];

$dotaz = "INSERT INTO {$wpdb->prefix}abonent(username, password, ID_users) VALUES('{$username}', '{$password}', {$current_user_id})";

$result = $wpdb->query($dotaz);

if($result) {

$_SESSION['zprava'] = "Přidáno";

}

else {

$_SESSION['zprava'] = "Chyba.";

}

}

header("Location: http://plovarnaluhacovice.icreation.cz/muj-ucet/zustatek-kreditu");

}

?>

#1

  1. 最简单的解决方案是在wp中创建一个页面模板, 将其添加到主题文件夹下的名称为” Page-process.php”, 并将所有process.php编码放入该模板中, 并将以下文本添加到该模板的顶部:

  2. 创建一个wp页面, 并在其上选择此模板作为”页面属性”元框下的页面模板。
  3. 在表单代码上, 将操作URL替换为刚创建的页面并链接到你创建的新页面模板。

    action =” http://plovarnaluhacovice.icreation.cz/wp-content/themes/Divi_Child/process.php”

概述:你将用WordPress上的普通页面替换” porcess.php”, 该页面将使用放置在” process.php”上的页面PHP代码, 但是此特权将允许你在wp页面上运行代码而不是直接放在主题PHP文件上。

谢谢, 让我知道会发生什么! 🙂

以上是 如何在functions.php中为自定义表单正确创建链接 的全部内容, 来源链接: utcz.com/p/200518.html

回到顶部