You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

寻求WordPress搭建谜语论坛的插件或代码建议

WordPress谜语论坛搭建方案

一、插件组合方案(适合无编程基础)

1. 用户认证与Google登录

  • 用Ultimate Member插件,支持Google OAuth登录,后台可直接设置「发布内容/评论必须登录」,权限配置可视化操作。
  • 替代方案:WPForms搭配其Google登录扩展,同样能快速实现登录限制与第三方登录功能。

2. 谜面&答案分栏展示

  • 安装Advanced Custom Fields (ACF),在后台创建两个自定义字段:
    • riddle_question(谜面,选择富文本字段,支持格式编辑)
    • riddle_answer(答案,选择富文本字段)
  • 编辑主题的single.php(若用自定义帖子类型则编辑single-riddle.php),插入以下代码实现点击显示答案:
<div class="riddle-question"><?php the_field('riddle_question'); ?></div>
<button id="show-answer">Answer</button>
<div class="riddle-answer" style="display:none;"><?php the_field('riddle_answer'); ?></div>

<script>
document.getElementById('show-answer').addEventListener('click', function() {
    const answer = document.querySelector('.riddle-answer');
    answer.style.display = answer.style.display === 'none' ? 'block' : 'none';
});
</script>

3. 访客评分(难度+趣味性)

  • 用WP-PostRatings插件,在设置里开启「允许未登录用户评分」,并将评分范围设为1-10分。
  • 在主题functions.php中添加代码,增加两个评分维度:
function add_rating_dimensions() {
    echo '<div class="rating-group">
            <span>难度评分:</span>
            '.get_post_ratings('difficulty', get_the_ID()).'
          </div>
          <div class="rating-group">
            <span>趣味性评分:</span>
            '.get_post_ratings('fun', get_the_ID()).'
          </div>';
}
add_action('the_content', 'add_rating_dimensions', 20);

4. 平均评分与难度等级展示

  • 利用插件自带的平均分函数,在模板中插入代码显示统计结果:
<div class="rating-stats">
    <p>平均难度:<?php echo get_post_rating_average('difficulty', get_the_ID()); ?>/10</p>
    <p>平均趣味性:<?php echo get_post_rating_average('fun', get_the_ID()); ?>/10</p>
    <p>难度等级:<?php 
        $avg = get_post_rating_average('difficulty', get_the_ID());
        if($avg <=3) echo '简单';
        elseif($avg <=6) echo '中等';
        else echo '困难';
    ?></p>
</div>

5. 用户历史发布记录

  • Ultimate Member插件自带用户个人页面扩展,后台开启「用户发布内容展示」后,用户profile页会自动显示其发布的所有谜语帖子。
  • 若用其他认证插件,可在主题author.php中添加查询代码:
<?php
$user_posts = get_posts(array(
    'author' => get_current_user_id(),
    'post_type' => 'riddle', // 对应你的谜语自定义帖子类型
    'posts_per_page' => -1
));
if($user_posts): ?>
    <h3>我的发布记录</h3>
    <ul>
        <?php foreach($user_posts as $post): setup_postdata($post); ?>
            <li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
        <?php endforeach; wp_reset_postdata(); ?>
    </ul>
<?php endif; ?>

二、轻量自定义方案(适合有基础的用户)

1. 注册谜语自定义帖子类型

在主题functions.php中添加代码:

function register_riddle_post_type() {
    register_post_type('riddle', array(
        'labels' => array(
            'name' => '谜语',
            'singular_name' => '谜语'
        ),
        'public' => true,
        'has_archive' => true,
        'supports' => array('title', 'editor', 'author')
    ));
}
add_action('init', 'register_riddle_post_type');

2. 手动实现评分存储

在functions.php中添加评分提交处理代码:

function handle_rating_submit() {
    if(isset($_POST['rating_submit']) && !is_user_logged_in()) {
        $post_id = intval($_POST['post_id']);
        $difficulty = intval($_POST['difficulty']);
        $fun = intval($_POST['fun']);
        
        // 更新难度评分数据
        $difficulty_data = get_post_meta($post_id, 'difficulty_ratings', true);
        $difficulty_data = $difficulty_data ? json_decode($difficulty_data, true) : array();
        $difficulty_data[] = $difficulty;
        update_post_meta($post_id, 'difficulty_ratings', json_encode($difficulty_data));
        
        // 更新趣味性评分数据
        $fun_data = get_post_meta($post_id, 'fun_ratings', true);
        $fun_data = $fun_data ? json_decode($fun_data, true) : array();
        $fun_data[] = $fun;
        update_post_meta($post_id, 'fun_ratings', json_encode($fun_data));
    }
}
add_action('init', 'handle_rating_submit');

3. 计算并显示平均分

在模板中插入代码展示统计结果:

<?php
// 计算难度平均分
$difficulty_data = get_post_meta(get_the_ID(), 'difficulty_ratings', true);
$difficulty_data = $difficulty_data ? json_decode($difficulty_data, true) : array();
$avg_difficulty = !empty($difficulty_data) ? array_sum($difficulty_data)/count($difficulty_data) : 0;

// 计算趣味性平均分
$fun_data = get_post_meta(get_the_ID(), 'fun_ratings', true);
$fun_data = $fun_data ? json_decode($fun_data, true) : array();
$avg_fun = !empty($fun_data) ? array_sum($fun_data)/count($fun_data) : 0;
?>

<div class="rating-summary">
    <p>难度平均分:<?php echo number_format($avg_difficulty, 1); ?>/10</p>
    <p>趣味性平均分:<?php echo number_format($avg_fun, 1); ?>/10</p>
</div>

内容的提问来源于stack exchange,提问作者R K

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 04:35:46