Loading
0

WordPress知更鸟主题个人中心添加投稿功能教程

公众号搜索菜鸟站长之家

站长教程WordPress主题知更鸟个人中心添加投稿功能教程

现在很多个人博客为了增加博客的内容,都会提供投稿通道,大部分都是以邮箱的形式进行投稿,不过这样一来,也很费人力,要拷贝复制,然后编辑等。如果给博客加个在线投稿功能,那就方便多了。稍微审核下文章内容就可以了。

不用插件用代码解决wordpress网站在线投稿功能

经过几种尝试,在露兜博客找到了合适的方法,并经过微调。勉强可用了,该文章针对的是本站之前发布的好看的erphpdown个人中心文章为基础

  1. erphpdown文件夹下建立一个php文件,命名为submission-form之类的
  2. 在上述文件里添加表单样式代码
<?php
if ( ! defined( 'ABSPATH' ) ) { exit; }
if( isset($_POST['tougao_form']) && $_POST['tougao_form'] == 'send'){
    if( isset($_COOKIE["tougao"]) && ( time() - $_COOKIE["tougao"] ) < 100 ){
        echo ('您投稿也太勤快了吧,先歇会儿! <a href="javascript:void(0);" onclick="history.back();">点此返回</a>');die() ;
    }
    //表单变量初始化
    $name = isset( $_POST['tougao_authorname'] ) ? $_POST['tougao_authorname'] : '';
    $email = isset( $_POST['tougao_authoremail'] ) ? $_POST['tougao_authoremail'] : '';
    $title = isset( $_POST['tougao_title'] ) ? $_POST['tougao_title'] : '';
    $tags = isset( $_POST['tougao_tags'] ) ? $_POST['tougao_tags'] : '';
    $category = isset( $_POST['cat'] ) ? (int)$_POST['cat'] : 0;
    $content = isset( $_POST['tou-content'] ) ? $_POST['tou-content'] : '';
    //表单项数据验证
    if ( empty($email) || strlen($email) > 60 || !preg_match("/^([a-z0-9\+_\-]+)(\.[a-z0-9\+_\-]+)*@([a-z0-9\-]+\.)+[a-z]{2,6}$/ix", $email)){
        echo ('邮箱必须填写,且不得超过60个字符,必须符合 Email 格式 <a href="javascript:void(0);" onclick="history.back();">点此返回</a>');die() ;
    }
    if ( empty($title) || strlen($title) > 100 ){
        echo ('文章标题必须填写,且不得超过100个字符 <a href="javascript:void(0);" onclick="history.back();">点此返回</a>');die() ;
    }
    if ( empty($content) || strlen($content) < 100){
        echo ('内容必须填写,且不得少于100个字符 <a href="javascript:void(0);" onclick="history.back();">点此返回</a>');die() ;
    }
    $tougao = array('post_title' => $title,'post_content' => $content,'post_status' => 'pending','tags_input' => $tags,'post_category' => array($category));
 
    $status = wp_insert_post( $tougao );//将文章插入数据库
    if ($status != 0){
        global $wpdb;
        $myposts = $wpdb->get_results("SELECT ID FROM $wpdb->posts WHERE post_status = 'pending' AND post_type = 'post' ORDER BY post_date DESC");
        add_post_meta($myposts[0]->ID, 'postauthor', $name);
        if( !empty($blog))
            add_post_meta($myposts[0]->ID, 'authorurl', $blog);
        setcookie("tougao", time(), time()+180);
        echo ('投稿成功!<a href="javascript:void(0);" onclick="history.back();">点此返回</a>');die() ;
    }else{
        echo ('投稿失败!<a href="javascript:void(0);" onclick="history.back();">点此返回</a>');die() ;
    }
}
 ?>
 
<style type="text/css">
#tou-primary {
    width: 100%;
}
#tou-basicinfo p {
    text-indent: 0;
}
.postform {
    background: #fff;
    width: 40%;
    margin: 5px 0;
    padding: 5px;
    border: 1px solid #ebebeb;
    border-radius: 2px;
    -webkit-appearance: none;
}
.post-area {
    margin-top: 10px;
}
#tou-basicinfo label {
    float: left;
    width: 80px;
    line-height: 40px;
}
#tou-basicinfo input {
    background: #fff;
    width: 40%;
    margin: 5px 0;
    padding: 5px;
    border: 1px solid #ebebeb;
    border-radius: 2px;
    -webkit-appearance: none;
}
#tou-basicinfo input:focus {
    outline: 0;
    border: 1px solid #568abc;
}
textarea, #tou-content{
    background: #fff;
    width: 100%;
    margin: 5px 0;
    padding: 5px;
    border: 1px solid #ebebeb;
    border-radius: 2px;
    -webkit-appearance: none;
}
#submit {
    background: #0088cc;
    float: left;
    width: 40%;
    height: 40px;
    color: #fff;
    text-align: center;
    margin: 10px 0 0 0;
    border: 0px;
    cursor: pointer;
    border-radius: 2px;
    -webkit-appearance: none;
    box-shadow: 0 0 2px rgba(0, 0, 0, 0.4);
}
#submit:hover {
    background: #a3a3a3;
}
.mce-path-item {
    display: none;
}
.mce-stack-layout{
    border: 1px solid #ebebeb;
}
#sc_select {
    display: none;
}
</style>
<div id="tou-primary">
    <main id="tou-main">
    <?php while ( have_posts() ) : the_post(); ?>
        <article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
            <div class="tou-content">
                <div class="single-content">
                    <?php the_content(); ?>
                    <?php if ( current_user_can('level_0') ){ ?>
                    <form method="post" action="<?php echo $_SERVER["REQUEST_URI"]; ?>">
                        <div id="tou-basicinfo">
                            <p>
                                <label>E-Mail:</label>
                                <input type="text" value="" name="tougao_authoremail" placeholder="必填" required/>
                            </p>
                            <p>
                                <label>文章标题:</label>
                                <input type="text" value="" name="tougao_title" placeholder="必填" required/>
                            </p>
                            <p>
                                <label>选择分类:</label>
                                <?php wp_dropdown_categories('show_count=0&hierarchical=1'); ?>
                            </p>
                            <p>
                                <label>关键字:</label>
                                <input type="text" value="" name="tougao_tags" placeholder="选填"/>
                            </p>
                        </div>
                        <div>
                            <label>文章内容(不少于100个字):</label>
                        <div class="post-area">
                            <?php
                                $post = false;
                                $content = '';
                                $editor_id = 'tou-content';
                                $settings = array(
                                    'textarea_rows' => 10
                                );
                                wp_editor( $content, $editor_id, $settings );
                            ?>
                        </div>
                        <p>
                            <input type="hidden" value="send" name="tougao_form" />
                            <input id="submit" name="submit" type="submit" value="提交文章" />
                        </p>
                    </form>
                        <?php } ?>
 
                    <div class="clear"></div>
 
                </div>
            </div><!-- .tou-content -->
        </article><!-- #page -->
    <?php endwhile; ?>
    </main><!-- .site-main -->
</div><!-- .content-area -->

3.修改样式

/*我要投稿*/
.wp-switch-editor{
    border-radius: 2px!important;
}
#tou-primary input[type=button], #tou-primary button {
    border-radius: 0!important;
}
.wp-core-ui .button, .wp-core-ui .button-secondary {
    background: #f3f5f6!important;
}

4.修改个人中心模板文件,在导航添加导航菜单

<li <?php if($_GET["pd"]=='tougao'){?>class="active"<?php }?> ><a href="?pd=tougao"  ><i class="er er-comment"></i> 我要投稿</a></li>

5.添加内容也在合适位置引入第一步文件

<?php }elseif($_GET["pd"]=='tougao'){////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////我要投稿			
    ?>
<div>
    <?php get_template_part( 'css/erphpdown/submission-form' ); ?>
</div>

6.不出意外的话,就OK了,当然你可以逐步调整代码,进一步完善。

注意文件引用路径,布局问题自行修改css代码;
该代码已知问题:提交后直接刷新网页会重复提交文章请注意,正在解决!
文章声明:
1、本站文章来源于互联网,仅供学习交流使用,严禁用于商业用途,因此造成的一切法律后果自行承担。
2、本站不对文章内容的完整性和安全性负责,请自行辨别,如发现有问题,请及时联系我们进行处理。
3、若文章中有侵权或不适当内容,请留言告知我们,本站会第一时间进行处理。
4、转载请保留原文地址,违者后果自负,本站保留一切法律追责权力。