共计 4166 个字符,预计需要花费 11 分钟才能阅读完成。
这篇文章主要讲解了“WordPress 中如何添加投稿功能”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着丸趣 TV 小编的思路慢慢深入,一起来研究和学习“WordPress 中如何添加投稿功能”吧!
一、添加投稿表单
1、首先在当前主题的目录下新建一个 php 文件,命名为 tougao-page.php,然后将 page.php 中的所有代码复制到 tougao-page.php 中;
2、删除 tougao-page.php 开头的所有注释,即 /* 与 */,以及它们之间的所有内容;
3、搜索:the_content,可以查找到类似代码 ?php the_content(); ?,将其替换成代码一
如果你在 tougao-page.php 中找不到 the_content,那么你可以查找:get_template_part,可找到类似代码:?php get_template_part(content , page ?,将 content-page.php 中的所有代码替换这部分代码即可。再用下面的代码替换 ?php the_content(); ?
代码一:
?php the_content(); ?
!-- 关于表单样式,请自行调整 --
form >二、添加表单处理代码 在 tougao-page.php 开头处中,将第一个 ?php 改成代码二:
?php
* Template Name: tougao
* 作者:露兜
* 博客:https://www.ludou.org/
*
* 更新记录
* 2010 年 09 月 09 日 : * 首个版本发布
*
* 2011 年 03 月 17 日 : * 修正时间戳函数,使用 wp 函数 current_time(timestamp)替代 time()
*
* 2011 年 04 月 12 日 : * 修改了 wp_die 函数调用,使用合适的页面 title
*
* 2013 年 01 月 30 日 : * 错误提示,增加点此返回链接
*
* 2013 年 07 月 24 日 : * 去除了 post type 的限制;已登录用户投稿不用填写昵称、email 和博客地址
*
* 2015 年 03 月 08 日 : * 使用 date_i18n(U)代替 current_time(timestamp)
*/
if( isset($_POST[ tougao_form]) $_POST[tougao_form] == send ) {
global $wpdb;
$current_url = http:// 你的投稿页面地址 // 注意修改此处的链接地址
$last_post = $wpdb- get_var( SELECT `post_date` FROM `$wpdb- posts` ORDER BY `post_date` DESC LIMIT 1
// 博客当前最新文章发布时间与要投稿的文章至少间隔 120 秒。 // 可自行修改时间间隔,修改下面代码中的 120 即可
// 相比 Cookie 来验证两次投稿的时间差,读数据库的方式更加安全
if ( (date_i18n( U) - strtotime($last_post)) 120 ) {
wp_die( 您投稿也太勤快了吧,先歇会儿!a href= .$current_url. 点此返回 /a
}
// 表单变量初始化
$name = isset( $_POST[ tougao_authorname] ) ? trim(htmlspecialchars($_POST[ tougao_authorname], ENT_QUOTES)) :
$email = isset( $_POST[ tougao_authoremail] ) ? trim(htmlspecialchars($_POST[ tougao_authoremail], ENT_QUOTES)) :
$blog = isset( $_POST[ tougao_authorblog] ) ? trim(htmlspecialchars($_POST[ tougao_authorblog], ENT_QUOTES)) :
$title = isset( $_POST[ tougao_title] ) ? trim(htmlspecialchars($_POST[ tougao_title], ENT_QUOTES)) :
$category = isset( $_POST[ cat] ) ? (int)$_POST[cat] : 0;
$content = isset( $_POST[ tougao_content] ) ? trim(htmlspecialchars($_POST[ tougao_content], ENT_QUOTES)) :
// 表单项数据验证
if ( empty($name) || mb_strlen($name) 20 ) {
wp_die( 昵称必须填写,且长度不得超过 20 字。a href= .$current_url. 点此返回 /a
}
if ( empty($email) || strlen($email) 60 || !preg_match(/^([a-z0-9\+_\-]+)(\.[a-z0-9\+_\-]+)*@([a-z0-9\-]+\.)+[a-z]{2,6}$/ix , $email)) {
wp_die( Email 必须填写,且长度不得超过 60 字,必须符合 Email 格式。a href= .$current_url. 点此返回 /a
}
if ( empty($title) || mb_strlen($title) 100 ) {
wp_die( 标题必须填写,且长度不得超过 100 字。a href= .$current_url. 点此返回 /a
}
if ( empty($content) || mb_strlen($content) 3000 || mb_strlen($content) 100) {
wp_die( 内容必须填写,且长度不得超过 3000 字,不得少于 100 字。a href= .$current_url. 点此返回 /a
}
$post_content = 昵称: .$name. br / Email: .$email. br / blog: .$blog. br / 内容: br / .$content;
$tougao = array(
post_title = $title,
post_content = $post_content,
post_category = array($category)
);
// 将文章插入数据库
$status = wp_insert_post( $tougao );
if ($status != 0) {
// 投稿成功给博主发送邮件
// somebody#example.com 替换博主邮箱
// My subject 替换为邮件标题,content 替换为邮件内容
wp_mail( somebody#example.com , My subject , content
wp_die( 投稿成功!感谢投稿!a href= .$current_url. 点此返回 /a , 投稿成功
}
else {
wp_die( 投稿失败!a href= .$current_url. 点此返回 /a
}
}
最后以 UTF- 8 编码保存 tougao-page.php,否则中文可能会乱码。然后进入 WordPress 管理后台 – 页面 – 创建页面,标题为投稿(可以自己起名),内容填上投稿说明等,右侧可以选择模板,选择 tougao 即可。此页面即前台注册页面,将该页面的链接放到网站任何位置,供用户点击注册即可。
好了,基本的投稿功能已经添加完毕,至于表单样式不好看,表单缺少你想要的项目等问题,你就自己添加 css、表单项吧。最后,也欢迎给本站投稿哦,当然本站的投稿方式是开放后台的注册功能,不是以上的表单形式。
代码补充说明
1、如果你想让投稿的文章立即发布,而不需要审核再编辑,那么请将以上代码中的:
post_content = $post_content,
改成:
post_content = $post_content, post_status = publish ,
2、如果你想给投稿页面增加验证码功能,可以 点此下载 验证码文件,解压后将 captcha 目录放到当前主题目录下,然后在代码一中,将 35 行的:
br clear= all
改成:
div > label for= CAPTCHA 验证码:
input id= CAPTCHA > /label
/div
div > label
img id= captcha_img src= ?php bloginfo(template_url ? /captcha/captcha.php /
/label
/div
br clear= all
将代码二中的:
if(isset($_POST[ tougao_form]) $_POST[tougao_form] == send ) {
改成:
if (!isset($_SESSION)) { session_start();
session_regenerate_id(TRUE);
if( isset($_POST[ tougao_form]) $_POST[tougao_form] == send ) { if(empty($_POST[ captcha_code])
|| empty($_SESSION[ ludou_lcr_secretword])
|| (trim(strtolower($_POST[ captcha_code])) != $_SESSION[ludou_lcr_secretword])
) {
wp_die( 验证码不正确!a href= .$current_url. 点此返回 /a
}
感谢各位的阅读,以上就是“WordPress 中如何添加投稿功能”的内容了,经过本文的学习后,相信大家对 WordPress 中如何添加投稿功能这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是丸趣 TV,丸趣 TV 小编将为大家推送更多相关知识点的文章,欢迎关注!