WordPress 非插件实现前台投稿成果

  许多网站都想开放读者的投稿成果,接管读者的投稿,不只可以富厚博客的内容,还可以增加与读者之间的相同,可以说是一举多得的工作,何乐不为呢?WordPress自己并不提供投稿成果,可是WordPress拥有强大的扩展本领,我们可以本身来添加这个成果。

实现用户投稿,有两种要领,一种是开放靠山的注册成果,普通用户注册进去默认配置为投稿者,登岸进去即可添加文章(默认为草稿);另一种要领是在前台提供投稿表单,用户填写相应的表格即可。前一种要领实现起来较量简朴,根基不需要博主设置太多对象,只是有些博主大概会以为别扭,不肯让他人看到本身的博客靠山;尔后一种要领对投稿者来说利便了许多,博主也不消担忧本身博客的靠山隐私,只是该要领实现起来较量贫苦,需要设置的对象许多。本文也只将先容后一种要领,但愿对你有所辅佐,虽然也只是复制粘贴代码就可以了。

一、添加投稿表单

 1、首先在当前主题的目次下新建一个php文件,定名为tougao-page.php,然后将page.php中的所有代码复制到tougao-page.php中;

 2、删除tougao-page.php开头的所有注释,即 /* 与 */ ,以及它们之间的所有内容;

 3、将 <?php the_content(); ?> 改成以下代码:

<?php the_content(); ?>

<!-- 关于表单样式,请自行调解-->
<form method="post" action="<?php echo $_SERVER["REQUEST_URI"]; ?>">
<div style="text-align: left; padding-top: 10px;">
<label for="tougao_authorname">昵称:*</label>
<input type="text" size="40" value="" id="tougao_authorname" name="tougao_authorname" />
</div>

<div style="text-align: left; padding-top: 10px;">
<label for="tougao_authoremail">E-Mail:*</label>
<input type="text" size="40" value="" id="tougao_authoremail" name="tougao_authoremail" />
</div>

<div style="text-align: left; padding-top: 10px;">
<label for="tougao_authorblog">您的博客:</label>
<input type="text" size="40" value="" id="tougao_authorblog" name="tougao_authorblog" />
</div>

<div style="text-align: left; padding-top: 10px;">
<label for="tougao_title">文章标题:*</label>
<input type="text" size="40" value="" id="tougao_title" name="tougao_title" />
</div>

<div style="text-align: left; padding-top: 10px;">
<label for="tougaocategorg">分类:*</label>
<?php wp_dropdown_categories('id=tougaocategorg&show_count=1&hierarchical=1'); ?>
</div>

<div style="text-align: left; padding-top: 10px;">
<label for="tougao_content">文章内容:*</label>
<textarea rows="15" cols="55" id="tougao_content" name="tougao_content"></textarea>
</div>

<br clear="all">
<div style="text-align: center; padding-top: 10px;">
<input type="hidden" value="send" name="tougao_form" />
<input type="submit" value="提交" />
<input type="reset" value="重填" />
</div>
</form> 二、添加表单处理惩罚代码

  在tougao-page.php开头处中,将第一个 <?php 改成:

<?php
/**
* Template Name: tougao
* 作者:露兜
* 博客:
*
* 更新记录
* 2010年09月09日 :
* 首个版本宣布
*
* 2011年03月17日 :
* 批改时间戳函数,利用wp函数current_time('timestamp')替代time()
*
* 2011年04月12日 :
* 修改了wp_die函数挪用,利用符合的页面title
*/

if( isset($_POST['tougao_form']) && $_POST['tougao_form'] == 'send')
{
global $wpdb;
$last_post = $wpdb->get_var("SELECT post_date FROM $wpdb->posts WHERE post_type = 'post' ORDER BY post_date DESC LIMIT 1");

// 博客当前最新文章宣布时间与要投稿的文章至少隔断120秒。
// 可自行修改时距离断,修改下面代码中的120即可
// 对比Cookie来验证两次投稿的时间差,读数据库的方法越发安详
if ( current_time('timestamp') - strtotime($last_post) < 120 )
{
wp_die('您投稿也太勤快了吧,先歇会儿!');
}

// 表单变量初始化
$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字');
}

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名目');
}

if ( empty($title) || mb_strlen($title) > 100 )
{
wp_die('标题必需填写,且长度不得高出100字');
}

if ( empty($content) || mb_strlen($content) > 3000 || mb_strlen($content) < 100)
{
wp_die('内容必需填写,且长度不得高出3000字,不得少于100字');
}

$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('投稿乐成!感激投稿!', '投稿乐成');
}
else
{
wp_die('投稿失败!');
}
}

  最后以UTF-8编码生存tougao-page.php,不然中文大概会乱码。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/10550.html