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プラグインを使用してカスタムフィールドを追加し、ショートコードで任意の場所に表示で […]
主な設定手順 メインアカウント id_rsa サブアカウント id_rsa_private .ssh/config 設定 Host github.com → id_rsa Host github.private → id […]
Next.jsの開発環境でHTTPSを使用する方法について、実践的な知見を交えて解説します。Next.js 13.5から導入された新機能により、ローカル開発環境でのHTTPS設定が大幅に簡素化されました。 背景 従来、N […]
ある日ふと、あれ最近PV下がっている、、しかもあからさまにというこありませんか? これって何か検索エンジンからペナルティを受けているのでは、、 でも特にサーチコンソールでそのような通知はうけていないのに、原因は何だろう […]
皆さんワードプレスのセキュリティーはどうされてますか? 「トラブル発生してからでは遅い」ということは身をもって体験しました。サイト作成する上で最優先でやるべきことだと思います。 WordPress が狙われる主な理由 脆 […]
Mastraとは AIエージェントを開発できるTypeScriptベースのフレームワークです AIエージェントとは ユーザーからのインストラクションを通じてタスクを進行してくれます
Roo-Clineとは VSCodeの開発効率を飛躍的に向上させる新しいAIコーディング支援プラグインです。 Roo-Clineは、Clineの機能を継承しながら、より多くのAPIプロバイダー対応と使いやすさの向上に焦点 […]
1. AWS SDK for Node.js の利用方法 SDKのセットアップ Transcribe API の使い方ひどうき 非同期バッチ処理とリアルタイム処理の比較 バッチ(非同期)文字起こしジョブの場合は、入力の音 […]
SnowMonkeyサイト制作案件の全貌 SnowMonkeyのウェブ制作の仕事はクライアントがウェブ制作会社ではなく、エンドクライアント(ウェブ制作とは関係ない事業者)が対象となる場合が多いです。 そのためコーディング […]
ショートカット 1. 新規フォルダ作成とリネーム 2. 名前の変更 3. ディレクトリ間の移動 4. 新しいウィンドウで開く 5. エクスプローラーの起動 6. 更新・再表示 7. プロパティの表示 8. アドレスバーへ […]
記事や固定ページ内で以下のようにショートコードを使用します:
(注意)*は不要です、実際にブログ記事にショートコードで関数が呼び出されてしまうので、*挿入しました
[*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
299 view
scrollHint
更新日:2024/03/13
250 view
XML Sitemap Generator for Google不具合のダウングレード対応、代替プラグイン
更新日:2024/06/13
236 view
【SnowMonkey】納品までのフローまとめ
更新日:2025/02/15
163 view
ワードプレスでフォントを変えたいとき、プラグインを使えば初心者でも簡単
更新日:2025/02/16
144 view
【Googleサーチコンソール】検索画面で表示させたくない「Googleのインデックス削除」
更新日:2024/06/07
130 view
【Snow Monkey】ショートコードで編集画面で任意の場所にHTMLファイルを挿入
更新日:2025/04/04
124 view
キーワード検索で上位表示させる方法【SEO】
更新日:2023/10/28
120 view
tailwindcss使い方
更新日:2024/03/13
120 view
Recline: GitHub Copilotで動作するClaude 3.5 Sonnet搭載の開発支援ツール
更新日:2025/01/20
110 view
WordPressプラグイン「All-in-One WP Migration」のトラブル
更新日:2022/03/31
84 view
ワードプレスセキュリティー対策まとめ【2025年】「site guard wordpress」「BackWPup バージョン5でUI変更!?」
更新日:2025/02/25
76 view
SSHを使用してGitHubのリポジトリをクローン、複数の接続元で公開鍵をディレクトリで区別する方法
更新日:2025/01/13
47 view
VSCodeで開発効率を劇的に向上させる!Roo-Clineプラグイン完全ガイド【Gemini API】
更新日:2025/02/08
43 view
Express、FastAPIを使用し、二重fetch構成のメリット
更新日:2025/03/28
41 view
「JSONスキーマ」と「Few-shot Learning」で実現する次世代生成AIソフトウェア開発の可能性
更新日:2025/02/12
40 view
WordPressの無料画像素材のおすすめダウンロードサイト!
更新日:2022/02/22
35 view
リファクタリング【VSCode Javasctipt Python】
更新日:2025/03/09
35 view
形態素解析とは?初心者でもわかるツールの使い方と実践例
更新日:2025/02/08
33 view
【Next.js AWS】音声文字起こし&要約、分析アプリケーション(S3)(Transcribe)(Amazon Bedrock)
更新日:2025/02/13
30 view