我正在尝试在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 errorfunction zustatek_kreditu_endpoint() {
add_rewrite_endpoint( 'zustatek-kreditu', EP_ROOT | EP_PAGES );
}add_action( 'init', 'zustatek_kreditu_endpoint' );
// ------------------// 2. Add new query varfunction 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 menufunction 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>
<
?phpadd_action( 'woocommerce_account_zustatek-kreditu_endpoint', 'hlavniMetoda' );
process.php文件:
<
?phprequire_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
- 最简单的解决方案是在wp中创建一个页面模板, 将其添加到主题文件夹下的名称为”
Page-process.php”
, 并将所有process.php编码放入该模板中, 并将以下文本添加到该模板的顶部:
- 创建一个wp页面, 并在其上选择此模板作为” 页面属性” 元框下的页面模板。
- 在表单代码上, 将操作URL替换为刚创建的页面并链接到你创建的新页面模板。
action =” http://plovarnaluhacovice.icreation.cz/wp-content/themes/Divi_Child/process.php”
【如何在functions.php中为自定义表单正确创建链接】谢谢, 让我知道会发生什么! ??
推荐阅读
- 如何通过WordPress主题正确实现基本的联系方式()
- 如何控制WordPress的AWE主题的滑块速度()
- 如何在WordPress中为自定义标头实现Boostrap小部件代码()
- 如何配置WordPress开发,主要,次要更新配置
- 如何将style.sass编译为style.css并保持缩进
- CentOS 8 - Bind DNS -支持IPV4&IPV6双栈服务配置
- ARHEL 6 中误删 libc.so.6 文件后恢复
- linux之lscpu命令
- oeasy教您玩转vim - 46 - # 范围控制