我如何限制用户为我的前端主题创建帖子?

时间:2014-01-13 作者:user3188442

我有一个和stachexchange完全一样的网站。在我的主题中,所有用户都可以提问。但我想限制用户发帖以防止垃圾邮件。示例:1 post per hour. 默认的新注册角色是author。Bainernet的帖子创建限制插件不适用于前端,我的主题中也没有任何短代码。

这是我发布的“提问”首页。请帮帮我。我正在使用健壮的Q&;主题。(在前面)

    <?php
/**
 * @package WordPress
 * @subpackage Robust Q&A - WPQA
 */
 ?>

<?php
include (TEMPLATEPATH . \'/translations.php\');
// Define the Post Redirect
$redir = $post->ID;

/////////////////////////////
//$_COOKIE Checkers       //
///////////////////////////

// Get Question Reported Cookie to Display Success Message
if (isset($_COOKIE[\'content_reported_\'.$post->ID])) {
    $reported_content = $_COOKIE[\'content_reported_\'.$post->ID];
    if(isset($reported_content) && $reported_content != NULL) {
        $message = $t_message_sucsess_content_reported;
    }
}

// Get Answer Posted to Question Cookie to Display Success Message
if (isset($_COOKIE[\'answer_posted_\'.$post->ID])) {
    $new_answer_posted = $_COOKIE[\'answer_posted_\'.$post->ID];
    if(isset($new_answer_posted) && $new_answer_posted != NULL) {
        $message = $t_message_answer_success_posted;
    }
}

// Get Comment Posted on Answer Cookie to Display Success Message
if (isset($_COOKIE[\'comment_posted_\'.$post->ID])) {
    $new_comment_posted = $_COOKIE[\'comment_posted_\'.$post->ID];
    if(isset($new_comment_posted) && $new_comment_posted != NULL) {
        $message = $t_message_sucsess_comment_on_answer;
    }
}

// Get Question Already Reported Cookie to Display Error Message
if (isset($_COOKIE[\'already_reported_\'.$post->ID])) {
    $already_reported_question = $_COOKIE[\'already_reported_\'.$post->ID];
    if(isset($already_reported_question) && $already_reported_question != NULL) {
        $message = new WP_Error(\'already_reported_question\', $t_message_already_reported_content);
    }
}

// Get Forgot Question Note Cookie to Display Error Message
if (isset($_COOKIE[\'forgot_add_note_\'.$post->ID])) {
    $forgot_question_note = $_COOKIE[\'forgot_add_note_\'.$post->ID];
    if(isset($forgot_question_note) && $forgot_question_note != NULL) {
        $message = new WP_Error(\'forgot_question_note\', $t_message_forgot_note_text);
    }
}

// Get Question Note Added Cookie to Display Success Message
if (isset($_COOKIE[\'question_note_added_\'.$post->ID])) {
    $question_note_added = $_COOKIE[\'question_note_added_\'.$post->ID];
    if(isset($question_note_added) && $question_note_added != NULL) {
        $message = $t_message_note_added_to_question;
    }
}

// Get Best Answer Selected Cookie to Display Success Message
if (isset($_COOKIE[\'best_answer_selected_\'.$post->ID])) {
    $best_answer_selected = $_COOKIE[\'best_answer_selected_\'.$post->ID];
    if(isset($best_answer_selected) && $best_answer_selected != NULL) {
        $message = $t_message_best_answer_selected;
    }
}

// Get Remove Question Email Alerts Cookie to Display Success Message
if (isset($_COOKIE[\'removed_question_email_alerts_\'.$post->ID])) {
    $remove_message_email_alerts = $_COOKIE[\'removed_question_email_alerts_\'.$post->ID];
    if(isset($remove_message_email_alerts) && $remove_message_email_alerts != NULL) {
        $message = $t_message_email_alerts_removed;
    }
}

if ( isset($_POST[\'answer_post\']) == \'1\') {
    $answer_content = $_POST[\'answer_content\'];
    $source_link = $_POST[\'source_link\'];
    $message = post_new_answer($answer_content, $source_link);
}

if ( isset($_POST[\'comment_on_answer_post\']) == \'1\') {
    $comment_content = $_POST[\'comment_content\'];
    $comment_parent_id = $_POST[\'comment_parent_id\'];
    $message = post_new_comment_to_answer($comment_content, $comment_parent_id);
}

if ( isset($_POST[\'best_answer_post\']) == \'1\') {
    $best_answer_id = $_POST[\'best_answer_id\'];
    $best_answer_parent_question = $_POST[\'best_answer_parent_question\'];
    $message = select_best_answer($best_answer_id, $best_answer_parent_question);
}

if ( isset($_POST[\'report_content\']) == \'1\') {
    $reported_item_id = $_POST[\'reported_item_id\'];
    $reported_type = $_POST[\'reported_type\'];
    $question_id = $_POST[\'question_id\'];
    $message = report_content_item($reported_item_id, $reported_type, $question_id);
}

if ( isset($_POST[\'add_note_to_question\']) == \'1\') {
    $add_note_text = $_POST[\'add_note_text\'];
    $question_id = $_POST[\'question_id\'];
    $message = add_note_to_question($add_note_text, $question_id);
}

if ( isset($_POST[\'remove_email_alerts\']) == \'1\') {
    $question_id = $_POST[\'remove_alerts_question\'];

    $message = remove_question_email_alerts($question_id);
}

get_header();?>

<script type=\'text/javascript\'>
    $(document).ready(function() {
       $(\'.boxy\').boxy({modal: true, closeText: \'\', draggable: false, unloadOnHide: false});
    });
</script>

    <!-- Main Section -->
    <div id="main">
            <div class="mainContentTop"></div>

        <div id="mainContent">

            <!-- Center Column -->
            <div id="centerCol" class="left">

                <!-- Top Section -->
                <div class="topSection">
                    <!-- Search Form -->
                    <?php //get_search_form(); ?>
                    <!-- Search Form -->

                    <div class="introBox2">
                        <div class="greyBtn addQuestion"><a href="<?php echo home_url(); ?>/<?php echo $t_ask_a_question_permalink;?>/"><span><?php echo $t_ask_question; ?> <img src="<?php echo get_template_directory_uri(); ?>/images/grey-add-btn-icon.jpg" alt="" /></span></a></div>
                        <?php if ( current_user_can(\'manage_options\')) {?>
                            <div class="editPageLink"><?php edit_post_link($t_edit_page_link); ?></div>
                        <?php } ?>
                        <?php include (TEMPLATEPATH . \'/breadcrumb.php\'); ?>   

                    </div>
                </div>
                <!-- / Top Section -->

                <!-- Left Inner Column -->

                <?php if (have_posts()) : ?>
                    <?php query_posts($query_string . ""); ?>
                    <?php while (have_posts()) : the_post(); ?>

                    <div id="leftColInner" class="left">
                        <?php 
                        if (isset($message)) {
                            display_message($message);
                        } ?>

                        <!-- Report Modal -->                                
                        <div class="reportPop hiddenContent" id="reportPop">
                            <form action="" method="post" name="reportContent">
                                <p><?php echo $t_report_content_message_text; ?></p>
                                <br />
                                <input type="hidden" value="<?php echo $post->ID ?>" name="reported_item_id" />
                                <input type="hidden" value="Question" name="reported_type" />
                                <input type="hidden" value="<?php echo $post->ID; ?>" name="question_id" />
                                <input type="hidden" value="1" name="report_content" />
                                <input type="submit" class="process" value="<?php echo $t_report_question;?>" />
                            </form
                            ><div class="clear"></div>
                        </div>
                        <!-- / Report Modal -->

                        <!-- Question -->
                        <div class="questionPageBox">
                            <div class="questionQuestion">

                                <?php 
                                    // Get data for displaying avatar
                                    $author = $authordata; 
                                    $blog_url = get_template_directory_uri();
                                    $selected_avatar_image = get_user_default_icon($author->ID);
                                    $avatar_image = \'/images/default-user-avatar-\'.$selected_avatar_image.\'.jpg\';
                                    $url = $blog_url . $avatar_image ;

                                    // Get data for linking to member profile when clicking avatar image
                                    $main_url = home_url();
                                    $author_name = get_the_author_meta(\'nicename\');
                                    $profile_link = \'/\'. $t_profile_permalink .\'/\';
                                    $author_profile_link = $main_url . $profile_link . $author_name;
                                    $email_question_asker = get_post_meta($post->ID, \'alert_asker_emails\', true);
                                ?>                 

                                <div class="questionBox" id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
                                    <div class="contentText">
                                        <h1><?php the_title(); ?></h1>
                                        <a name="<?php the_ID(); ?>"></a>
                                        <p class="entry"><?php the_content(); ?></p>

                                        <!-- Add Note to Question Modal -->                                
                                        <div class="reportPop hiddenContent" id="addNotePop">
                                            <form action="" method="post" name="addNoteToQuestion">
                                                <label><?php echo $t_add_note_popup_heading_text; ?>:</label>
                                                <textarea name="add_note_text"></textarea>
                                                <br /><br />
                                                <input type="hidden" value="<?php echo $post->ID ?>" name="question_id">
                                                <input type="hidden" value="1" name="add_note_to_question" />
                                                <input type="submit" class="process" value="<?php echo $t_add_a_note_link;?>" />
                                            </form
                                            ><div class="clear"></div>
                                        </div>
                                        <!-- / Add Note to Question Modal -->

                                        <!-- Remove Question Email Alerts -->                                
                                        <div class="reportPop hiddenContent" id="removeEmailAlerts">
                                            <form action="" method="post" name="removeEmailAlerts">
                                                <p><?php echo $t_remove_email_alerts_text;?></p>
                                                <br />
                                                <input type="hidden" value="<?php echo $post->ID ?>" name="remove_alerts_question">
                                                <input type="hidden" value="1" name="remove_email_alerts" />
                                                <input type="submit" class="process" value="<?php echo $t_remove_email_alerts_link;?>" />
                                            </form
                                            ><div class="clear"></div>
                                        </div>
                                        <!-- / Remove Question Email Alerts --> 

                                        <?php // Show Question Note if Set
                                        $author_note = get_post_meta($post->ID, \'question_note\', true);

                                        if ($author_note != NULL) { ?>
                                            <p class="questionNote"><span><?php echo $t_author_note_heading_text;?>: </span><br /><?php echo $author_note; ?></p>
                                        <?php } ?>

                                        <?php // Show Source Link Code if Set
                                        if (isset($source_link) != NULL) { ?>
                                        <p class="sourceLink"><span><?php echo $t_link_text;?>: </span><a href="#"><?php echo $source_link; ?></a></p>
                                        <?php } ?>

                                        <?php
                                        $posttags = get_the_tags();
                                        if ($posttags) {?>
                                        <p class="tagRow"><?php the_tags($t_tags_text.\' \' , \' \', \'\'); ?></p>
                                        <?php } ?>

                                        <p class="bylineCategory left"><?php echo $t_in_text;?>: <a href="<?php echo home_url(); ?>/<?php echo $t_category_permalink;?>/"><?php the_category(\', \',\'multiple\') ?></a> | <?php the_time(get_option( \'date_format\' )); ?></p>

                                        <?php // ADD Question Note
                                        global $current_user;
                                        get_currentuserinfo();

                                        if ($post->post_author == $current_user->ID && $author_note == \'\') { ?>
                                            <p class="addNote left"><span>|</span><a href="#addNotePop" onclick="return; false" class="boxy" title="<?php echo $t_add_a_note_link;?>"><?php echo $t_add_a_note_link;?></a></p>
                                        <?php } ?>

                                        <?php 
                                        $email_question_asker = get_post_meta($post->ID, \'alert_asker_emails\',true);

                                        if ($post->post_author == $current_user->ID && $email_question_asker == \'true\') {?>
                                            <p class="addNote"><span>|</span>
                                            <a href="#removeEmailAlerts" onclick="return; false" class="boxy" title="<?php echo $t_remove_email_alerts_link;?>"><?php echo $t_remove_email_alerts_link;?></a></p>
                                        <?php } ?>

                                    </div>
                                    <div class="clear"></div>
                                </div>
                                <div class="clear"></div>
                                <div class="bylineBox otherBylineBox"><a href="<?php echo home_url(); ?>/<?php echo $t_profile_permalink;?>/<?php echo $author->user_nicename; ?>/"><span><?php echo $author->display_name; ?><?php echo getPointLevel($author->ID, \'sm\'); ?><?php $expert_user = get_user_meta($author->ID, \'expert\', true); if($expert_user == \'yes\') { ?><img src="<?php echo get_template_directory_uri(); ?>/images/expert-badge-icon.png" alt="<?php echo $t_expert_text;?>" class="expertImg" /><?php } ?></span></a></div>

                                 <?php
                                if (is_user_logged_in()) {
                                ?>

                                <div class="bylineBoxShare" id="report<?php echo $post->ID ?>"><a href="#reportPop" onclick="return; false" class="boxy" title="<?php echo $t_report_question;?>"><span><img src="<?php echo get_template_directory_uri(); ?>/images/flag-this-icon.png" alt="<?php echo $t_report_question;?>" /></span></a></div>

                                <?php } else { ?>
                                <div class="bylineBoxShare"><a href="<?php bloginfo(\'siteurl\'); ?>/<?php echo $t_login_permalink;?>/?redir=<?php echo $redir; ?>" title="<?php echo $t_login_signup_report_content_text;?>"><span><img src="<?php echo get_template_directory_uri(); ?>/images/flag-this-icon.png" alt="<?php echo $t_report_question;?>" /></span></a></div> 

                                <?php } ?>

                                <span class="adminURL" id="<?php echo admin_url();?>"></span>
                                <span class="templateURL" id="<?php echo get_template_directory_uri(); ?>"></span>
                                <?php $post_id = $post->ID;?>
                                <?php $current_like_count = get_post_meta($post_id, \'like_count\');?>
                                <?php if (isset($current_like_count[0]) == NULL || $current_like_count[0] == 0){$current_like_count[0] = 0;}?>
                                <span class="likeCount-<?php echo $post_id ?>" id="likeCountCurrent-<?php echo $current_like_count[0]?>"></span>

                                <?php
                                if (is_user_logged_in()) {

                                    global $wpdb;
                                    $current_user_id = get_current_user_id();

                                    $get_user_liked_question_value = "SELECT * FROM " . $wpdb->prefix . "rqa_liked_content WHERE user_id =\'". $current_user_id . "\' AND like_content_id =\'". $post_id . "\'" ;
                                    $users_liked_question_value = $wpdb->get_results($get_user_liked_question_value);

                                    if (isset($users_liked_question_value[0]->user_id) == $current_user_id && isset($users_liked_question_value[0]->like_content_id) == $post_id) {

                                    ?>
                                        <div class="likeContent">
                                            <div class="bylineBox right disabledLike"><a href="#" onclick="return false;" class="likeThisContent"><span><img src="<?php echo get_template_directory_uri(); ?>/images/like-icon.png" alt="<?php echo $t_like_text;?>" /><?php if ($current_like_count[0] > 0) { echo $current_like_count[0];} else {echo $t_like_text;} ?></span></a></div>
                                        </div>

                                    <?php } else { ?>

                                        <div class="likeContent">
                                            <div class="bylineBox right likeThisLink" id="like-this-<?php echo $post_id; ?>"><a href="#" onclick="return false;" class="likeThisContent" id="type-post"><span><img src="<?php echo get_template_directory_uri(); ?>/images/like-icon.png" alt="<?php echo $t_like_text;?>" /><?php if ($current_like_count[0] > 0) { echo $current_like_count[0];} else {echo $t_like_text;} ?></span></a></div>
                                        </div>


                                    <?php } ?>

                                <?php } else { ?>
                                <div class="likeContent">
                                     <div class="bylineBox right likeThisLink"><a href="<?php bloginfo(\'siteurl\'); ?>/<?php echo $t_login_permalink;?>/?redir=<?php echo $redir; ?>" title="<?php echo $t_login_signup_like;?>"><span><img src="<?php echo get_template_directory_uri(); ?>/images/like-icon.png" alt="<?php echo $t_like_text;?>" /><?php if ($current_like_count[0] > 0) { echo $current_like_count[0];} else {echo $t_like_text;} ?></span></a></div>
                                </div>
                                <?php } ?>


                                <div class="clear"></div>
                            </div>
                        </div>
                        <!-- / Question -->
                        <?php endwhile; ?>


                                <?php endif; ?>

                                <?php wp_reset_query();?>

                        <div class="answerBar" id="comments">
                            <div class="answerBarInner">

                            <?php
                            // List out the number of Answers - Exlcuding Comments on Answers
                            $answers_count = c_parent_comment_counter($post->ID);

                            // Var to show comments on answers count - not used
                            // $comments_on_answers_count = $post->comment_count - $number_of_parents;

                            if ($answers_count < 1) {?>
                                <h5><?php echo $t_no_answer_yet_answer_now_text;?> </h5>
                            <?php }
                            if ($answers_count == 1) {?>
                                <h5><?php echo $answers_count; ?> <?php echo $t_answer_text;?> </h5>
                            <?php }

                            if ($answers_count > 1) { ?>
                                <h5><?php echo $answers_count; ?> <?php echo $t_answers_text;?> </h5>
                            <?php } ?>

                            </div>
                        </div>

                        <?php comments_template(); ?>

                        <?php
                        // If logged in change nav to My Account and Log Out
                        if ( is_user_logged_in()) { ?>

                           <?php // Users cant post answers ?> 
                           <?php $users_cant_answer = get_option(\'robust_qa_admin_answer_only\');
                            if ($users_cant_answer == true && (!current_user_can(\'manage_options\') && $current_user->expert == \'no\')) {?>
                                <p class="bottomMessageBox footnote2"><b><?php echo $t_admins_answer_questions_only_text; ?> <a href="<?php echo home_url(); ?>/<?php echo $t_ask_a_question_permalink;?>/"><?php echo $t_admin_answer_link;?></a></b></p>
                            <?php } else {?>

                                <div class="addAnswer"><a name="answerQuestionForm"></a>
                                    <h4><?php echo $t_answer_this_question_heading;?></h4>

                                    <div class="answerSubmitForm">

                                        <form action="" method="post" name="answerSubmitForm" id="answerSubmitForm">
                                            <div class="clear"></div>
                                            <fieldset><textarea rows="10" cols="40" name="answer_content" id="answer_content" ><?php if (isset($_POST[\'answer_content\'])) { echo $_POST[\'answer_content\']; }?></textarea></fieldset>
                                            <label class="sourceLinkLabel"><?php echo $t_source_link_heading;?>: <span>(<?php echo $t_optional_text;?>)</span></label>
                                            <input type="text" name="source_link" class="sourceLinkInput" value="http://" />
                                            <input type="hidden" name="answer_post" value="1">  
                                            <input type="submit" value="<?php echo $t_add_answer_btn;?>" />
                                            <div class="clear"></div>
                                        </form>
                                    </div>
                                </div>

                            <?php } ?>
                        <?php } else { ?>
                            <div class="clear"></div>
                            <div class="bottomMessageBox2">
                                <h4 class="subHeadh4"><?php echo $t_must_be_logged_in_to_answer;?></h4>
                                <h5><?php echo $t_already_a_member_text;?> <a href="<?php echo home_url();?>/<?php echo $t_login_permalink;?>/?redir=<?php echo $redir; ?>"><?php echo $t_login_text;?></a><br /><?php echo $t_not_member_yet_text;?> <a href="<?php echo home_url();?>/<?php echo $t_signup_permalink?>/?redir=<?php echo the_ID(); ?>"><?php echo $t_signup_text;?></a></h5>

                            </div>
                        <?php } ?>                          

                        <div class="relatedQuestions">
                            <div class="relatedHeader">
                                <?php 
                                $single_cat = get_the_category();
                                $single_parent_cat = get_category($single_cat[0]->category_parent);
                                $main_question_id = get_the_ID();

                                if ($single_cat[0]->category_parent != 0) { ?>
                                <div class="backBtn"><a href="<?php echo home_url(); ?>/<?php echo $t_category_permalink;?>/<?php echo $single_parent_cat->slug; ?>/<?php echo $single_cat[0]->slug; ?>/"><span><?php echo $t_more_category_questions_heading;?></span></a></div>
                                <?php } elseif ($single_cat[0]->category_parent == 0) { ?>
                                <div class="backBtn"><a href="<?php echo home_url(); ?>/<?php echo $t_category_permalink;?>/<?php echo $single_cat[0]->slug; ?>/"><span><?php echo $t_more_category_questions_heading?></span></a></div>
                                <?php } ?>

                                <h5><?php echo $t_related_questions_heading;?>:</h5>
                            </div>
                            <div class="dashedDivider"></div>
                            <ul>
                                <?php 
                                if (have_posts()) : 
                                $args = array(
                                    \'posts_per_page\' => 5,
                                    \'cat\' => $single_cat[0]->cat_ID,
                                    \'orderby\' => \'date\',
                                );
                                query_posts($args);

                                ?>
                                <?php while (have_posts()) : the_post();?>

                                <?php if ($post->ID != $main_question_id ) { ?>
                                <li><a href="<?php the_permalink(); ?> "><?php the_title(); ?></a></li>
                                <?php } ?>
                                <?php endwhile; ?>
                            <?php endif; ?>
                            <?php wp_reset_query();?>
                            </ul>
                        </div>

                    <div class="reset"></div>

                </div>
                <!-- / Left Inner Column -->

                <?php get_sidebar(); ?>

            </div>
            <!-- / Center Column -->

            <div class="clear"></div>
        </div>
    </div>
    <div class="mainContentBottom"></div>
    <!-- / Main Section -->

<?php get_footer(); ?>
 <?php if ( is_singular() ) wp_enqueue_script( "comment-reply" ); ?>

1 个回复
SO网友:Danny

您是否尝试过此处列出的插件?

http://glue-talk.com/359/wordpress-plugin-limit-post-creation/

结束

相关推荐

Displaying popular posts

我想写一个查询,在我的侧边栏中显示3-4条最受欢迎的帖子,并显示帖子的缩略图。我试着查看存档小部件,但它只显示链接。(想,我可以从那里复制代码),我怎样才能得到我想要的结果?