• TOP
  • 記事一覧
  • WordPressでカスタムフィールドを使った記事のスコアリングシステムの実装

WordPressでカスタムフィールドを使った記事のスコアリングシステムの実装

更新日:2025/01/27

WordPressで記事にスコアを付けて、そのスコアに基づいて記事を並び替えて表示する機能を実装する方法を解説します。この実装では、SCFプラグインを使用してカスタムフィールドを追加し、ショートコードで任意の場所に表示できるようにします。

WordPress DB カスタムフィールド スコア (post_score) フロント表示 [‘score_posts’]

実装手順

1. カスタムフィールドの設定

SCFプラグインで以下の設定を行います:

  • フィールド名:post_score
  • タイプ:テキスト
  • ラベル:スコア
  • デフォルト値:0
カスタムフィールド スコア 0 フィールド名: post_score タイプ: テキスト デフォルト値: 0

2. ショートコード実装

function score_ordered_posts_shortcode($atts) {
    $atts = shortcode_atts(array(
        'posts_per_page' => 5,
        'order' => 'DESC',
    ), $atts);

    $args = array(
        'post_type' => 'post',
        'posts_per_page' => $atts['posts_per_page'],
        'meta_key' => 'post_score',
        'orderby' => 'meta_value_num',
        'order' => $atts['order']
    );

    $query = new WP_Query($args);
    ob_start();
    
    if ($query->have_posts()) :
        echo '<div class="score-posts-list">';
        while ($query->have_posts()) : $query->the_post();
            $score = SCF::get('post_score');
            ?>
            <article class="score-post-item">
                <h3><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h3>
                <div class="score-value">スコア: <?php echo esc_html($score); ?></div>
            </article>
            <?php
        endwhile;
        echo '</div>';
    endif;
    wp_reset_postdata();
    return ob_get_clean();
}
add_shortcode('score_posts', 'score_ordered_posts_shortcode');

リファクタリング【VSCode Javasctipt Python】

スコア: 0

はじめに プログラムを開発していると、最初は動けばOKと思って書いたコードが、後々見づらくなったり、修正がしにくくなったりすることがあります。そうしたときに役立つのがリファクタリングです。 本記事では、VSCodeを使用 […]

Excel VBAファイル(.bas)の文字化けの対策

スコア: 0

どういうタイミングで文字化けするか? ブラウザでのファイル読み込み時に文字化けしてしまいます メモ帳でしたら自動判定で正常に表示されます メモ帳での読み込み .bas (Shift-JIS) 自動判定 正常表示 ブラウザ […]

形態素解析とは?初心者でもわかるツールの使い方と実践例

スコア: 0

1. 形態素解析の基礎知識 形態素解析とは、テキストを言語学的に意味を持つ最小単位(形態素)に分解し、それぞれの品詞や活用形などの文法情報を判定する自然言語処理の基礎技術です。 私は今日公園で本を読みました 私 代名詞 […]

Windowsショートカットエラーの原因と解決方法「このショートカットは、リンク先のファイルが変更または移動されているので、正しく機能しません」

スコア: 0

Windowsを使用していると、突然「このショートカットは、リンク先のファイルが変更または移動されているので、正しく機能しません」というエラーメッセージに遭遇することがあります。この記事では、この一般的な問題の原因と解決 […]

WordPressのタクソノミー親子関係を確認する3つの方法

スコア: 0

こんにちは!今回は、WordPressでタクソノミーの親子関係を確認するための様々な方法について、詳しく解説していきます。管理画面以外にも複数の方法があり、用途に応じて使い分けることで効率的な運用が可能です。 WordP […]

3. 使用方法

記事や固定ページ内で以下のようにショートコードを使用します:

(注意)*は不要です、実際にブログ記事にショートコードで関数が呼び出されてしまうので、*挿入しました

[*score_posts*]

示件数とソート順を指定:

[*score_posts posts_per_page="3" order="DESC"*]

カスタマイズのポイント

  1. 表示件数の変更
  2. ソート順の変更(DESC:降順、ASC:昇順)
  3. 表示スタイルのカスタマイズ
記事タイトル1 スコア: 95 記事タイトル2 スコア: 85 記事タイトル3 スコア: 75

WordPressでスコアデータのCSVインポート機能を実装する

CSV File post_id,score Import Process Validation Error Handling WordPress DB Read CSV Update Scores

WordPressで記事のスコアを一括管理するために、CSVファイルからのインポート機能を実装する方法を解説します。この機能により、大量の記事のスコアを効率的に更新できます。

実装手順

1. 管理メニューの追加

function import_post_scores() {
    add_management_page(
        'スコアインポート',
        'スコアインポート',
        'manage_options',
        'score-import',
        'render_score_import_page'
    );
}
add_action('admin_menu', 'import_post_scores');

2. インポートページの実装

function render_score_import_page() {
    ?>
    <div class="wrap">
        <h1>スコアの一括インポート</h1>
        <form method="post" enctype="multipart/form-data">
            <?php wp_nonce_field('score_import_action', 'score_import_nonce'); ?>
            <input type="file" name="score_csv" accept=".csv" required>
            <input type="submit" name="submit_score_import" 
                   class="button button-primary" value="インポート実行">
        </form>
    </div>
    <?php
}
スコアの一括インポート CSVファイルをドラッグ&ドロップ または ファイルを選択 CSVフォーマット: post_id,score 例: 123,85 インポート実行

3. インポート処理の実装

function process_score_import($file) {
    if (($handle = fopen($file, 'r')) !== FALSE) {
        // ヘッダーをスキップ
        fgetcsv($handle);
        
        $results = [
            'updated' => 0,
            'errors' => []
        ];
        
        while (($data = fgetcsv($handle)) !== FALSE) {
            $post_id = intval($data[0]);
            $score = intval($data[1]);
            
            if (validate_import_data($post_id, $score)) {
                SCF::update_post_meta($post_id, 'post_score', $score);
                $results['updated']++;
            } else {
                $results['errors'][] = "Invalid data: ID={$post_id}, Score={$score}";
            }
        }
        fclose($handle);
        return $results;
    }
    return false;
}

4. バリデーション関数

function validate_import_data($post_id, $score) {
    return (
        $post_id > 0 && 
        post_exists($post_id) && 
        is_numeric($score) && 
        $score >= 0 && 
        $score <= 100
    );
}

CSVファイルのフォーマット

post_id,score
123,85
456,92
789,78

使用方法

  1. CSVファイルの準備
    • 1列目:記事ID
    • 2列目:スコア値(0-100)
  2. インポート手順
    • 管理画面の「ツール」→「スコアインポート」に移動
    • CSVファイルを選択
    • 「インポート実行」をクリック
  3. 実行結果の確認
    • 更新された記事数
    • エラーがあった場合はその内容

エラーハンドリング

  • 存在しない記事IDのチェック
  • スコア値の範囲チェック
  • CSVフォーマットの検証
  • 文字コードの確認
話題のキーワードから探す