<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>wordpress投稿 &#8211; 九创科技</title>
	<atom:link href="https://www.3code.cn/tag/wordpress%E6%8A%95%E7%A8%BF/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.3code.cn</link>
	<description>Wordpress外贸企业主题, Wp企业主题, wordpress企业主题, wordpress主题定制, WORDPRESS外贸网站建设SEO</description>
	<lastBuildDate>Fri, 15 Jul 2011 15:30:54 +0000</lastBuildDate>
	<language>zh-Hans</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	
	<item>
		<title>非插件实现WordPress 的投稿功能</title>
		<link>https://www.3code.cn/%e9%9d%9e%e6%8f%92%e4%bb%b6%e5%ae%9e%e7%8e%b0wordpress-%e7%9a%84%e6%8a%95%e7%a8%bf%e5%8a%9f%e8%83%bd/</link>
		
		<dc:creator><![CDATA[寒林]]></dc:creator>
		<pubDate>Fri, 15 Jul 2011 15:21:02 +0000</pubDate>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[WORDPRESS教程]]></category>
		<category><![CDATA[WORDPRESS主题技术]]></category>
		<category><![CDATA[wordpress投稿]]></category>
		<category><![CDATA[wordpress教程]]></category>
		<guid isPermaLink="false">https://www.3code.cn/?p=2742</guid>

					<description><![CDATA[我们都知道 WordPress 官方有一些关于投稿功能的插件，我了解过其中一些，很遗憾的是，大多都是英文的，对于国内用户并不是很便于管理，另一方面，插件毕竟有其局限性，不能个性化地针对主题进行定制。所以我还是选择了用非插件的方法，根据博客联盟的实际需求写了一个。方法如下：]]></description>
										<content:encoded><![CDATA[<p>我们都知道 <strong>WordPress</strong> 官方有一些关于投稿功能的插件，我了解过其中一些，很遗憾的是，大多都是英文的，对于国内用户并不是很便于管理，另一方面，插件毕竟有其局限性，不能个性化地针对主题进行定制。所以我还是选择了用非插件的方法，根据博客联盟的实际需求写了一个。方法如下：</p>
<p><strong>一、新建投稿页面模板</strong></p>
<p>和 <strong>WordPress</strong> 常规的新建页面模板一样，把主题的 page.php 另存为 tougao.php，并且在第一行的 &lt;?php 之后添加模板的标识注释：</p>
<div>/*<br />
Template Name: 投稿模板<br />
*/</div>
<p><strong>二、添加表单，在 the_content(); 函数下添加如下代码：</strong></p>
<div>&lt;form id=&#8221;tougaoform&#8221; method=&#8221;post&#8221; action=&#8221;&lt;?php echo $_SERVER[&#8220;REQUEST_URI&#8221;]; ?&gt;&#8221;&gt;<br />
        &lt;p&gt;&lt;input id=&#8221;author&#8221; type=&#8221;text&#8221; size=&#8221;40&#8243; value=&#8221;&#8221; name=&#8221;tougao_authorname&#8221; /&gt;&lt;label&gt;昵称（*必填）&lt;/label&gt;&lt;/p&gt;<br />
        &lt;p&gt;&lt;input id=&#8221;email&#8221; type=&#8221;text&#8221; size=&#8221;40&#8243; value=&#8221;&#8221; name=&#8221;tougao_authoremail&#8221; /&gt;&lt;label&gt;邮箱（*必填）&lt;/label&gt;&lt;/p&gt;<br />
        &lt;p&gt;&lt;input id=&#8221;url&#8221; type=&#8221;text&#8221; size=&#8221;40&#8243; value=&#8221;&#8221; name=&#8221;tougao_authorblog&#8221; /&gt;&lt;label&gt;您的博客/文章来源&lt;/label&gt;&lt;/p&gt;<br />
        &lt;p&gt;&lt;input id=&#8221;tougao_title&#8221; type=&#8221;text&#8221; size=&#8221;40&#8243; value=&#8221;&#8221; name=&#8221;tougao_title&#8221; /&gt;&lt;label&gt;文章标题（*必填）&lt;/label&gt;&lt;/p&gt;<br />
        &lt;p&gt;&lt;input id=&#8221;tags&#8221; type=&#8221;text&#8221; size=&#8221;40&#8243; value=&#8221;&#8221; name=&#8221;tougao_tags&#8221; /&gt;&lt;label&gt;文章标签（多个标签请用英文逗号 , 分开）&lt;/label&gt;&lt;/p&gt;<br />
        &lt;p&gt;&lt;?php wp_dropdown_categories(&#8216;show_option_none=请选择文章分类&amp;show_count=1&amp;hierarchical=1&amp;hide_empty=0&#8217;); ?&gt;&lt;label&gt;文章分类（*必填）&lt;/label&gt;&lt;/p&gt;<br />
        &lt;textarea rows=&#8221;15&#8243; cols=&#8221;55&#8243; id=&#8221;tougao&#8221; name=&#8221;tougao_content&#8221;&gt;&lt;/textarea&gt;<br />
        &lt;p&gt;<br />
        &lt;input type=&#8221;hidden&#8221; value=&#8221;send&#8221; name=&#8221;tougao_form&#8221; /&gt;<br />
        &lt;input id=&#8221;submit&#8221; type=&#8221;submit&#8221; value=&#8221;提交&#8221; /&gt;<br />
        &lt;input id=&#8221;reset&#8221; type=&#8221;reset&#8221; value=&#8221;重填&#8221; /&gt;<br />
        &lt;/p&gt;<br />
&lt;/form&gt;</div>
<p><strong>三、在此新建的投稿页面中添加如下函数：</strong></p>
<div>if( isset($_POST[&#8216;tougao_form&#8217;]) &amp;&amp; $_POST[&#8216;tougao_form&#8217;] == &#8216;send&#8217;){<br />
    if ( isset($_COOKIE[&#8220;tougao&#8221;]) &amp;&amp; ( time() &#8211; $_COOKIE[&#8220;tougao&#8221;] ) &lt; 120 ){<br />
        wp_die(&#8216;您投稿也太勤快了吧，先歇会儿！&#8217;);<br />
    }<br />
    //表单变量初始化<br />
    $name = isset( $_POST[&#8216;tougao_authorname&#8217;] ) ? $_POST[&#8216;tougao_authorname&#8217;] : &#8221;;<br />
    $email = isset( $_POST[&#8216;tougao_authoremail&#8217;] ) ? $_POST[&#8216;tougao_authoremail&#8217;] : &#8221;;<br />
    $blog = isset( $_POST[&#8216;tougao_authorblog&#8217;] ) ? $_POST[&#8216;tougao_authorblog&#8217;] : &#8221;;<br />
    $title = isset( $_POST[&#8216;tougao_title&#8217;] ) ? $_POST[&#8216;tougao_title&#8217;] : &#8221;;<br />
    $tags = isset( $_POST[&#8216;tougao_tags&#8217;] ) ? $_POST[&#8216;tougao_tags&#8217;] : &#8221;;<br />
    $category = isset( $_POST[&#8216;cat&#8217;] ) ? (int)$_POST[&#8216;cat&#8217;] : 0;<br />
    $content = isset( $_POST[&#8216;tougao_content&#8217;] ) ? $_POST[&#8216;tougao_content&#8217;] : &#8221;;<br />
    //表单项数据验证<br />
    if ( empty($name) || strlen($name) &gt; 20 ){<br />
        wp_die(&#8216;昵称必须填写，且不得超过20个长度&#8217;);<br />
    }<br />
    if ( empty($email) || strlen($email) &gt; 60 || !preg_match(&#8220;/^([a-z0-9\+_\-]+)(\.[a-z0-9\+_\-]+)*@([a-z0-9\-]+\.)+[a-z]{2,6}$/ix&#8221;, $email)){<br />
        wp_die(&#8216;邮箱必须填写，且不得超过60个长度，必须符合 Email 格式&#8217;);<br />
    }<br />
    if ( empty($title) || strlen($title) &gt; 100 ){<br />
        wp_die(&#8216;文章标题必须填写，且不得超过100个长度&#8217;);<br />
    }<br />
    if ( empty($content) || strlen($content) &lt; 100){<br />
        wp_die(&#8216;内容必须填写，且不得少于100个长度&#8217;);<br />
    }<br />
    $tougao = array(<br />
        &#8216;post_title&#8217; =&gt; $title,                //标题<br />
        &#8216;post_content&#8217; =&gt; $content,            //内容<br />
        &#8216;post_status&#8217; =&gt; &#8216;pending&#8217;,            //待审<br />
        &#8216;tags_input&#8217; =&gt; $tags,                //标签<br />
        &#8216;post_category&#8217; =&gt; array($category)    //分类<br />
    );<br />
    //将文章插入数据库<br />
    $status = wp_insert_post( $tougao );<br />
    if ($status != 0){<br />
    /*<br />
        //将自定义域写入最新待审文章<br />
        global $wpdb;<br />
        $myposts = $wpdb-&gt;get_results(&#8221;<br />
            SELECT ID<br />
            FROM $wpdb-&gt;posts<br />
            WHERE post_status = &#8216;pending&#8217;<br />
            AND post_type = &#8216;post&#8217;<br />
            ORDER BY post_date DESC<br />
        &#8220;);<br />
        add_post_meta($myposts[0]-&gt;ID, &#8216;cbs_postauthor&#8217;, $name);    //插入投稿人昵称的自定义域<br />
        if ( !empty($blog)) add_post_meta($myposts[0]-&gt;ID, &#8216;cbs_posturl&#8217;, $blog);    //插入投稿人网址的自定义域<br />
    */<br />
        setcookie(&#8220;tougao&#8221;, time(), time()+180);<br />
        wp_die(&#8216;投稿成功！&#8217;,&#8217;投稿成功！&#8217;);<br />
    } else {<br />
        wp_die(&#8216;投稿失败！&#8217;,&#8217;投稿失败！&#8217;);<br />
    }<br />
}</div>
<p>可以看到以上有一小段注释，是因为博客联盟有用到自定义域，为了兼容主题的相应函数，所以我特意加上了，如果你有同样的需要，去掉此注释就可以了。以上方法主要参考了露兜博客的《<strong>WordPress</strong> 添加投稿功能邮件通知》，我只是根据主题的特定需要稍作了修改，当然你也可以根据你的主题需要再作修改，这就是非插件的好处啦。提示一下，以上代码其实还可以作进一步的扩展，比如说在用户投稿成功之后，可以向管理员发出邮件通知，立马进行审核，这里就不多作说明了，有兴趣的朋友可以折腾一下。</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
