WordPressでカスタムフィールドを使った記事のスコアリング 一定割合ランダム表示でε-greedy方策
WordPressで記事にスコアを付けて、そのスコアに基づいて記事を並び替えて表示する機能を実装する方法を解説します。この実装では、SCFプラグインを使用してカスタムフィールドを追加し、ショートコードで任意の場所に表示で […]
更新日:2025/01/27
WordPressで記事にスコアを付けて、そのスコアに基づいて記事を並び替えて表示する機能を実装する方法を解説します。この実装では、SCFプラグインを使用してカスタムフィールドを追加し、ショートコードで任意の場所に表示できるようにします。
SCFプラグインで以下の設定を行います:
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');
WordPressで記事にスコアを付けて、そのスコアに基づいて記事を並び替えて表示する機能を実装する方法を解説します。この実装では、SCFプラグインを使用してカスタムフィールドを追加し、ショートコードで任意の場所に表示で […]
項目 チェリーピック マージ 目的 特定のコミットだけを選択的に取り込む ブランチ全体の変更を統合する Gitコマンド例 git cherry-pick a1b2c3d git merge feature-branch […]
処理の大枠、データの流れ AWS SDK for Node.js の利用方法 SDKのセットアップ インフラ担当者への権限付与の依頼 Transcribe API の使い方 非同期バッチ処理とリアルタイム処理の比較 項目 […]
外部記事URL追加フロー REST API関連の主要関数 register_rest_route() REST APIのエンドポイントを登録するための関数です。 wp_remote_get() HTTPリクエストを外部U […]
Supabaseってなに? 超ざっくり言うと「Firebaseのオープンソース版みたいなもの」です。サーバーサイドの面倒な処理をノーコード/ローコードで簡単にできるサービスです。 Supabaseは「BaaS(Backe […]
はじめに ラッコキーワードのような検索ボリュームチェックツールを、Google Ads APIを使って自作できることをご存知でしょうか?今回は、その実現方法について解説します。 Google Ads API 自作アプリ […]
Roo Code(Roo-Cline)とは Clineフォークしたソフトウェアです ClineとはVSCodeの開発効率を飛躍的に向上させるAIコーディング支援プラグインですね。 Roo Code(Roo-Cline)は […]
Dockerでデータベースコンテナを利用する際、特にWindowsホスト環境でMySQLを実行する場合に「Failed to find valid data directory」や「Data Dictionary ini […]
Pythonインストールについて pythonと検索するとヒットするPython公式のサイトからインストーラーをダウンロードします 初心者の方には、Python 3.12または3.13の最新安定版をインストールすることを […]
どういうタイミングで文字化けするか? ブラウザでのファイル読み込み時に文字化けしてしまいます メモ帳でしたら自動判定で正常に表示されます メモ帳での読み込み .bas (Shift-JIS) 自動判定 正常表示 ブラウザ […]
記事や固定ページ内で以下のようにショートコードを使用します:
(注意)*は不要です、実際にブログ記事にショートコードで関数が呼び出されてしまうので、*挿入しました
[*score_posts*]
示件数とソート順を指定:
[*score_posts posts_per_page="3" order="DESC"*]
WordPressで記事のスコアを一括管理するために、CSVファイルからのインポート機能を実装する方法を解説します。この機能により、大量の記事のスコアを効率的に更新できます。
function import_post_scores() {
add_management_page(
'スコアインポート',
'スコアインポート',
'manage_options',
'score-import',
'render_score_import_page'
);
}
add_action('admin_menu', 'import_post_scores');
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
}
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;
}
function validate_import_data($post_id, $score) {
return (
$post_id > 0 &&
post_exists($post_id) &&
is_numeric($score) &&
$score >= 0 &&
$score <= 100
);
}
post_id,score
123,85
456,92
789,78
// page-results.phpのWP_Queryの結果を処理する部分に以下のコードを追加
if ($results_query->have_posts()) {
$posts = $results_query->posts;
$total_posts = count($posts);
// ε値を設定 (30%をランダム表示にする場合は0.3)
$epsilon = 0.3;
// ランダムに選ぶ投稿の数を計算
$random_count = ceil($total_posts * $epsilon);
$score_count = $total_posts - $random_count;
// スコアでソートする投稿とランダムに表示する投稿を分ける
$sorted_posts = array_slice($posts, 0, $score_count);
$random_posts = array_slice($posts, $score_count);
// ランダムな投稿をシャッフル
shuffle($random_posts);
// 結果を結合
$results_query->posts = array_merge($sorted_posts, $random_posts);
$results_query->post_count = count($results_query->posts);
}
検索
カテゴリー
mixhostでのWordPress利用について
更新日:2024/04/02
303 view
scrollHint
更新日:2024/03/13
251 view
XML Sitemap Generator for Google不具合のダウングレード対応、代替プラグイン
更新日:2024/06/13
243 view
【SnowMonkey】納品までのフローまとめ
更新日:2025/02/15
164 view
【Snow Monkey】ショートコードで編集画面で任意の場所にHTMLファイルを挿入
更新日:2025/04/18
131 view
【Googleサーチコンソール】検索画面で表示させたくない「Googleのインデックス削除」
更新日:2024/06/07
131 view
tailwindcss使い方
更新日:2024/03/13
125 view
キーワード検索で上位表示させる方法【SEO】
更新日:2023/10/28
120 view
Recline: GitHub Copilotで動作するClaude 3.5 Sonnet搭載の開発支援ツール
更新日:2025/01/20
115 view
WordPressプラグイン「All-in-One WP Migration」のトラブル
更新日:2022/03/31
84 view
ワードプレスセキュリティー対策まとめ【2025年】「site guard wordpress」「BackWPup バージョン5でUI変更!?」
更新日:2025/02/25
77 view
VSCodeで開発効率を劇的に向上させる!Roo Code(Roo-Cline)プラグイン完全ガイド
更新日:2025/04/06
75 view
Express、FastAPIを使用し、二重fetch構成のメリット
更新日:2025/04/26
51 view
SSHを使用してGitHubのリポジトリをクローン、複数の接続元で公開鍵をディレクトリで区別する方法
更新日:2025/01/13
49 view
「JSONスキーマ」と「Few-shot Learning」で実現する次世代生成AIソフトウェア開発の可能性
更新日:2025/07/06
44 view
Supabase 初心者向け解説、Supabase CLI インストール(Scoop)
更新日:2025/06/07
44 view
リファクタリング【VSCode Javasctipt Python】
更新日:2025/03/09
36 view
Next.jsでAWS Amplifyを使ってPDFアップロード機能を実装、Fast APIにPOST(こちらはApp runner)
更新日:2025/06/06
36 view
形態素解析とは?初心者でもわかるツールの使い方と実践例
更新日:2025/02/08
34 view
VSCodeオススメプラグイン一覧「 Pretter – Code formatter」「PHP Intelephense 」
更新日:2025/07/07
31 view