前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >WordPress 添加投稿功能

WordPress 添加投稿功能

作者头像
阳光岛主
发布2019-02-18 15:33:50
1.5K0
发布2019-02-18 15:33:50
举报
文章被收录于专栏:米扑专栏

WordPress网站开放投稿功能,接受读者的投稿。但WordPress本身并不提供投稿功能,只拥有强大的扩展能力,我们可以自己添加这个投稿功能。

实现用户投稿,有两种方法:

一种是开放后台注册功能,普通用户注册进去默认设置为投稿者,登陆进去即可添加文章(默认为草稿);

另一种是在前台提供投稿表单,用户填写相应的表格,例如米扑博客:http://blog.mimvp.com

前一种方法实现起来比较简单,基本不需要配置太多,只是有些博主可能会觉得别扭,不愿让他人看到自己的博客后台;而后一种方法对投稿者来说方便了很多,博主也不用担心自己博客的后台隐私,只是该方法实现起来比较麻烦,需要配置的东西很多。本文只将介绍后一种方法,希望对你有所帮助,当然也只是复制粘贴代码就可以了。

一、添加投稿表单

1、首先在当前主题目录(/wp-content/themes/your_theme/pages/)下新建一个php文件,命名为tougao.php,并将page.php中的所有代码复制到tougao.php中(tougao.php名称可能在your_theme/pages/tougao.php下,也可能在your_theme/template-tougao.php);

tougao.php 代码

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197

<?php/** * template name: 投稿 * website demo : http://blog.mimvp.com * description: template for mimvp.com * author : yanggang * date   : 2015-11-20 */ if( isset($_POST['tougao_form']) && $_POST['tougao_form'] == 'mimvp_auto_post'){    if( isset($_COOKIE["tougao"]) && ( time() - $_COOKIE["tougao"] ) < 120 ){        wp_die('您投稿也太勤快了吧,先歇会儿!');    }    print_r($_POST);    //表单变量初始化    $authorname = isset( $_POST['tougao_authorname'] ) ? $_POST['tougao_authorname'] : '';    $email = isset( $_POST['tougao_authoremail'] ) ? $_POST['tougao_authoremail'] : '';    $blog = isset( $_POST['tougao_authorblog'] ) ? $_POST['tougao_authorblog'] : '';    $title = isset( $_POST['tougao_title'] ) ? $_POST['tougao_title'] : '';    $tags = isset( $_POST['tougao_tags'] ) ? $_POST['tougao_tags'] : '';    $category = isset( $_POST['tougao_cat'] ) ? $_POST['tougao_cat'] : '4766';    $postdate = isset( $_POST['tougao_date'] ) ? $_POST['tougao_date'] : date("Y-m-d H:i:s", strtotime("+8 hour"));    $content = isset( $_POST['tougao_content'] ) ? $_POST['tougao_content'] : '';     $category_list = explode(",", $category);    //    $category_list = array("4924","1798","783","771"); /*    echo $postdate;    //表单项数据验证    if ( empty($authorname) || strlen($authorname) > 20 ){        wp_die('昵称必须填写,且不得超过20个长度');    }    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('邮箱必须填写,且不得超过60个长度,必须符合email格式');    }    if ( empty($title) || strlen($title) > 100 ){        wp_die('文章标题必须填写,且不得超过100个长度');    }    if ( empty($content) || strlen($content) < 100){        wp_die('内容必须填写,且不得少于100个长度');    } */     $tougao = array('post_title' => $title,        'post_content' => $content,        'post_status' => 'publish',        'tags_input' => $tags,        'post_date' => $postdate,        // 'post_category' => array($category));        'post_category' => $category_list);     // 将文章插入数据库    $status = wp_insert_post( $tougao );                    if ($status != 0){        global $wpdb;        $myposts = $wpdb->get_results("SELECT ID FROM $wpdb->posts WHERE post_status = 'publish' AND post_type = 'post' ORDER BY post_date DESC");        add_post_meta($myposts[0]->ID, 'tcp_postauthor', $authorname);  //插入投稿人昵称的自定义域        if( !empty($blog))            add_post_meta($myposts[0]->ID, 'tcp_posturl', $blog);       //插入投稿人网址的自定义域        setcookie("tougao", time(), time()+180);        wp_die('投稿成功!','投稿成功!');    }else{        wp_die('投稿失败!','投稿失败!');    }} get_header();?> <?php get_sidebar(); ?> <body><script type="text/javascript" src="<?php bloginfo('template_url'); ?>/kindeditor/kindeditor-min.js"></script><script type="text/javascript" src="<?php bloginfo('template_url'); ?>/kindeditor/lang/zh_CN.js"></script><script type="text/javascript">$(document).ready(function(){    var editor;    KindEditor.ready(function(K) {        editor = K.create('textarea[name="tougao_content"]', {            allowFileManager : false,                allowImageUpload : false        });    });});</script><?php if (have_posts()) : ?><?php while (have_posts()) : the_post(); ?><?php include('top.php'); ?><div id="wrapper" class="clearfix"><div id="navigation"><div class="navigation"><h2><a title="<?php the_title(); ?>"><?php the_title(); ?></a></h2></div><?php include("includes/notice.php"); ?></div><div class="tougao divmargin"> <div class="entry"> <form method="post" action="<?php echo $_SERVER["REQUEST_URI"]; $current_user = wp_get_current_user(); ?>"><div id="basicinfo"> <table style="width: 700px; line-height: 30px; font-size: 16px;"><tr><td style="width: 75px; text-align: right; padding-right: 10px;">昵称:</td><td><input type="text" style="width: 200px;" name="tougao_authorname" value="<?php if ( 0 != $current_user->ID ) echo $current_user->user_login; ?>" /><small>*</small></td></tr> <tr><td style="width: 75px; text-align: right; padding-right: 10px;">E-Mail:</td><td><input type="text" style="width: 200px;" name="tougao_authoremail" value="<?php if ( 0 != $current_user->ID ) echo $current_user->user_email; ?>" /><small>*</small></td></tr> <tr><td style="width: 75px; text-align: right; padding-right: 10px;">您的网站:</td><td><input type="text" style="width: 200px;" name="tougao_authorblog" value="<?php if ( 0 != $current_user->ID ) echo $current_user->user_url; ?>" /></td></tr> <tr><td style="width: 75px; text-align: right; padding-right: 10px;">文章标题:</td><td><input type="text" style="width: 200px;" name="tougao_title" value="" /><small>*</small></td></tr>  <tr><td style="width: 75px; text-align: right; padding-right: 10px;">关键字:</td><td><input type="text" style="width: 200px;" value="" name="tougao_tags" /><small>*</small></td></tr> <tr><td style="width: 75px; text-align: right; padding-right: 10px;">文章分类:</td><td><?php //wp_dropdown_categories('show_count=1&hierarchical=1'); ?><?php wp_dropdown_categories('title_li=0&hierarchical=1'); ?><small>*</small></td></tr> </div> <tr><td colspan="2">文章内容:(必须)</td></tr> <tr><td colspan="2"><div class="post-area"><textarea rows="15" cols="60" id="tougao_content" name="tougao_content"></textarea></div></td></tr> <tr><td>发布密码:</td><td><input type="password" style="width: 200px;" value="123456" name="tougao_form" /><small>*</small></td></tr>  <tr><td colspan="2"><input id="submit" name="submit" type="submit" value="提交" />&nbsp;&nbsp;&nbsp;<input id="reset" name="submit" type="reset" value="重填" /></td></tr> </table>  </form> </div></div></div><?php endwhile; else: ?><?php endif; ?><?php get_footer(); ?>

2、tougao.php开头注释/* 与 */ ,需要添加如下内容:

12345678910

<?php/** * template name: 投稿 * website demo : http://blog.mimvp.com * description: template for mimvp.com * author : yanggang * date   : 2015-11-20 */ ……

上面注释里,必须要有 template name 模板名称,供发布页面时选用

3、最后以UTF-8编码保存tougao.php,否则中文可能会乱码。

4、然后进入WordPress管理后台 – 页面 – 创建页面,标题为投稿,内容填上投稿说明等,右下侧选择模板 投稿(template name 模板名称为“投稿”)。

此页面即自定义的前台注册页面,将该页面的链接放到网站任何位置,供用户点击注册即可,示例为米扑博客:http://blog.mimvp.com

好了,投稿的基本功能已经添加完毕,至于表单样式不好看,表单缺少你想要的项目等问题,你就自己添加css、表单项吧。最后,也欢迎给米扑博客投稿,当然本站也支持第一种注册投稿功能,秉持开放自由的态度。

代码补充说明

1、如果你想让投稿的文章立即发布,而不需要审核再编辑,那么请将以上代码66行改成:

‘post_content’ => $post_content, ‘post_status’ => ‘publish’,

2、如果你想让用户在投稿的同时,将投稿者注册成你本站的投稿者,并将文章的作者归到这个投稿者的名下,你可以参考上面的投稿代码tougao.php

3、如果你的博客文章都有自定义栏目,并且想在用户投稿的同时添加自定义栏目,参考上面的投稿代码tougao.php

4、如果你觉得本文提供的文章编辑框太过单调,需要一个富文本编辑,你可以看看这篇文章(包含图片上传功能):WordPress投稿功能添加富文本编辑器

5、如果你使用了一些富文本编辑器,文章提交后内容中的代码都被转义了,参考上面的投稿代码tougao.php

6、如果你需要投稿的文章发布后通知投稿者,可以看看这篇文章(前提投稿的文章默认是草稿状态,而不是直接发布):WordPress投稿功能添加邮件提醒功能

7、如果你想给投稿页面增加验证码功能,可以 点此下载 验证码文件,解压后将captcha目录放到当前主题目录下,然后在代码一中,将35行的:

<br clear=”all”>

改成:

12345678910111213

<div style="text-align: left; padding-top: 10px;">  <label for="CAPTCHA">验证码:    <input id="CAPTCHA" style="width:110px;*float:left;" class="input" type="text" tabindex="24" size="10" value="" name="captcha_code" /> 看不清?<a href="javascript:void(0)" onclick="document.getElementById('captcha_img').src='<?php bloginfo('template_url'); ?>/captcha/captcha.php?'+Math.random();document.getElementById('CAPTCHA').focus();return false;">点击更换</a>  </label></div>     <div style="text-align: left; padding-top: 10px;">  <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’) {

改成:

123456789101112

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自动加br标签的方法

每当WordPress添加html代码时候WordPress都会进行格式检查自动在后面加入br标签或p标签导致代码出现错误,打开WordPress程序中的 wp-includes/formatting.php,查找

function wpautop($pee, $br = true) 

将他改为:

function wpautop($pee, $br = false)

就可以禁止wordpress自动加br或p标签了。

修改后,不换行的效果,请见米扑代理:

米扑代理2.0发布,集成支付功能

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2015年11月29日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、添加投稿表单
  • 代码补充说明
相关产品与服务
验证码
腾讯云新一代行为验证码(Captcha),基于十道安全栅栏, 为网页、App、小程序开发者打造立体、全面的人机验证。最大程度保护注册登录、活动秒杀、点赞发帖、数据保护等各大场景下业务安全的同时,提供更精细化的用户体验。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档