Wordpress - 允许匿名用户提交帖子?

时间:2016-06-13 12:07:27

标签: php wordpress wordpress-plugin

guide之后,我正在尝试创建自己的匿名用户提交的帖子插件。

到目前为止,我的代码如下:

function suq_form_shortcode() {

    if (
        isset($_POST['suq_form_create_quote_submitted'])
        && wp_verify_nonce($_POST['suq_form_create_quote_submitted'],'suq_form_create_quote')
    ) {

        $suq_quote_title = trim($_POST['suq_quote_title']);
        $suq_quote_author = trim($_POST['suq_quote_author']);
        $suq_quote_text = trim($_POST['suq_quote_text']);

        if ($suq_quote_author != '' && $suq_quote_text != '') {

            $quote_data = array(
                'post_title' => $suq_quote_title,
                'post_content' => $suq_quote_text,
                'post_status' => 'pending',
                'post_author' => $suq_quote_author,
                'post_type' => 'post'
            );

            if($quote_id = wp_insert_post($quote_data)){

              echo '<p>Quote created and awaiting moderation!</p>';

            }

        } else { // author or text field is empty

            echo '<p>Quote NOT saved! Who said it? and Quote must not be empty.</p>';

        }
    }

    echo suq_get_create_quote_form($suq_quote_author, $suq_quote_text, $suq_quote_category);

}

function suq_get_create_quote_form ($suq_quote_author = '', $suq_quote_text = '', $suq_quote_category = 0) {

    $out .= '<form id="create_quote_form" method="post" action="">';

    $out .= wp_nonce_field('suq_form_create_quote', 'suq_form_create_quote_submitted');

    $out .= '<label for="suq_quote_author">Name</label><br/>';
    $out .= '<input type="text" id="suq_quote_author" name="suq_quote_author" value="' . $suq_quote_author . '"/><br/>';


    $out .= '<label for="suq_quote_title">Title</label><br/>';
    $out .= '<input type="text" id="suq_quote_title" name="suq_quote_title" value=""/><br/>';

    $out .= '<label for="suq_quote_text">Quote</label><br/>';
    $out .= '<textarea id="suq_quote_text" name="suq_quote_text" />' . $suq_quote_text . '</textarea><br/><br/>';
    $out .= '<input type="submit" id="suq_submit" name="suq_submit" value="Submit Quote For Publication">';

    $out .= '</form>';

    return $out;
}

它工作正常,因为我可以在我的管理区域中看到提交的帖子,但缺少一个信息,这是用户提交的作者姓名。

enter image description here

如何能够显示用户自己提供的作者姓名?

我已将作者姓名传递给WP:

'post_author' => $suq_quote_author,

但WP似乎没有接受它......

1 个答案:

答案 0 :(得分:1)

post_author Take(int)添加帖子的用户的ID。默认为当前用户ID

在您的情况下,“匿名用户”可以提交帖子。没有与您的帖子相关的用户保存在用户表中,因此在帖子元表中保存此“匿名用户名”,并且'post_author'= admin用户ID(1)

$quote_data = array(
                'post_title' => $suq_quote_title,
                'post_content' => $suq_quote_text,
                'post_status' => 'pending',
                'post_author' => 1, // admin user id 
                'post_type' => 'post',
);
$quote_id = wp_insert_post($quote_data);
update_post_meta ( $quote_id,'anonymous_user',$suq_quote_author);

在后端的帖子列表中显示此字段。在function.php文件

中添加此功能
function add_anonymous_user_column( $columns ) {
    return array_merge( $columns, 
        array( 'anonymous_user' => __( 'Anonymous user Name', 'your_text_domain' ) ) );
}
add_filter( 'manage_posts_columns' , 'add_anonymous_user_column' );

要获取匿名用户名的值,请在function.php文件

中添加此功能
function display_posts_display_posts_anonymous_user( $column, $post_id ) {
    if ($column == 'anonymous_user'){
        echo get_post_meta ($post_id,'anonymous_user',true);
    }
}
add_action( 'manage_posts_custom_column' , 'display_posts_display_posts_anonymous_user', 10, 2 );

如果您从unset($columns['author']);函数中使用add_anonymous_user_column()的帖子列表中删除默认的“作者”

function add_anonymous_user_column( $columns ) {
     unset($columns['author']);
    return array_merge( $columns, 
        array( 'anonymous_user' => __( 'Anonymous user Name', 'your_text_domain' ) ) );
}
add_filter( 'manage_posts_columns' , 'add_anonymous_user_column' );

enter image description here