只有登录用户才能从前端发帖,表单发帖方式为:<登录用户的用户名>

时间:2011-02-11 作者:Unfortunately

我已经从前端手动推出了一个表单,其中包含一些我需要的自定义函数。然而,我已经将表单设置为只有用户登录时才可访问,我希望文章显示为该用户发布的文章。思想??这是我当前的代码:

后端:

if( \'POST\' == $_SERVER[\'REQUEST_METHOD\'] && !empty( $_POST[\'action\'] ) && ($_POST[\'action\']== \'new_post\')) {
    $has_errors = false;

    $title = $_POST[\'title\'];
    $tablature = $_POST[\'tablature\'];
    $performer = $_POST[\'performer\'];
    $composer = $_POST[\'composer\'];
    $submitter = $_POST[\'submitter\'];
    $cat = array( $_POST[\'cat\'] );

    if(!isset($title)) { echo \'<div class="error">Title required.</div>\'; $has_errors = true; }
    if(!isset($tablature)) { echo \'<div class="error">Description required.</div>\'; $has_errors = true; }
    if(!isset($performer)) { echo \'<div class="error">Performer required.</div>\'; $has_errors = true; }
    if(!isset($composer)) { echo \'<div class="error">Composer required.</div>\'; $has_errors = true; }
    if($cat == -1) { echo \'<div class="error">Please select a category.</div>\'; $has_errors = true; }

    $tags = $_POST[\'post_tags\'];
    if (!$has_errors){
    // Save <title>  by: <performer>
    $title .= " by " .$performer;

    // Save Composed by: <composer> Performed by: <performer> <tablature>
    $content = "<h4>Composed by: ".$composer."</h4><h4>Performed by: ".$performer."</h4><p>Submitted by: ".$submitter."</p><br/>".$tablature;

    $new_post = array(
        \'post_title\' => $title,
        \'post_content\' => $content,
        \'post_category\' => $cat,
        \'post_status\' => \'draft\'
    );
    wp_insert_post($new_post);

    // save email and submitter as post meta in custom fields
    wp_redirect( home_url(\'/thank-you/\') );
}
}

前端:

<div id="postbox">
<form id="new_post" name="new_post" method="post" action="">
<p><label for="submitter">Submitted By</label><br />
<input type="text" id="submitter" value="" tabindex="1" size="20" name="submitter" class=”required” minlength="3" />
</p>
<p><label for="email">Email Address</label><br />
<input type="text" id="email" value="" tabindex="2" size="20" name="email" />
</p>
<p><label for="title">Song Title</label><br />
<input type="text" id="title" value="" tabindex="3" size="20" name="title" class=”required” minlength="3" />
</p>
<p><label for="composer">Composed By</label><br />
<input type="text" id="composer" value="" tabindex="4" size="20" name="composer" class=”required” minlength="3" />
</p>
<p><label for="performer">Performed By</label><br />
<input type="text" id="performer" value="" tabindex="5" size="20" name="performer" class=”required” minlength="3" />
</p>
<p><label for="tablature">Song Body</label><br />
<textarea id="tablature" tabindex="6" name="tablature" cols="50" rows="6" class=”required” minlength="50"></textarea>
</p>
 <p><?php wp_dropdown_categories( \'show_option_none=Category&tab_index=7&taxonomy=category&exclude=5&class=required\' ); ?></p>
<p align="right"><input type="submit" value="Submit" tabindex="8" id="submit" name="submit" /></p>
<input type="hidden" name="action" value="new_post" />
<?php wp_nonce_field( \'new-post\' ); ?>
</form>
</div>
谢谢!

2 个回复
最合适的回答,由SO网友:Bainternet 整理而成

您可以使用

global $current_user;
get_currentuserinfo();
然后添加

\'post_author\' => $current_user->ID
到您的$new\\u post数组。

然后你可以使用

<p>Posted by: <?php the_author(); ?></p>

SO网友:Otto

假设用户已登录,则wp\\u insert\\u post应自动正确设置post author字段。您是否尝试过调用\\u author()来输出帖子的作者名称?

结束

相关推荐

键的值或键的存在的Query_Posts()

我最近开始在一个项目中使用简单字段来区分不同类型的帖子。从现在起,所有帖子都会有四个可能的元值(故事、文章、视频或卡通)中的一个。这些类型的帖子都没有唯一的属性或值,所以我决定这次不使用自定义帖子类型。我知道如何查询具有特定元值的帖子,但这只适用于已经具有与之关联的元键的帖子,而不适用于在安装简单字段插件并投入使用之前创建的帖子。我很好奇如何查询所有没有元键“fizzbuzz”或有键但与“foobar”值关联的帖子。有没有办法查询所有没有密钥的帖子?