/**
* Plugin Name: Related Posts Custom
* Description: 関連記事をショートコードで表示し、設定画面からレイアウトを調整可能
* Version: 1.0
* Author: OpenAI
*/
if (!defined('ABSPATH')) exit;
add_action('admin_menu', function() {
add_options_page('関連記事設定', '関連記事設定', 'manage_options', 'related-posts-settings', 'rpc_settings_page');
});
add_action('admin_init', function() {
register_setting('rpc_settings_group', 'rpc_display_type');
register_setting('rpc_settings_group', 'rpc_column_count');
add_settings_section('rpc_section', '', null, 'related-posts-settings');
add_settings_field('rpc_display_type', '表示タイプ', function() {
$options = [
'default' => 'デフォルト',
'bordered' => 'カードに枠線を表示',
'large-thumbnail' => '大きなサムネイル表示にする',
'overlay-title' => '大きなサムネイルにタイトルを重ねて表示する'
];
$current = get_option('rpc_display_type', 'default');
foreach ($options as $val => $label) {
echo ' ' . esc_html($label) . ' ';
}
}, 'related-posts-settings', 'rpc_section');
add_settings_field('rpc_column_count', '列数', function() {
$current = get_option('rpc_column_count', '3');
echo '';
foreach ([2, 3] as $count) {
echo '' . $count . ' ';
}
echo ' ';
}, 'related-posts-settings', 'rpc_section');
});
function rpc_settings_page() {
echo '
関連記事の表示設定 ';
}
add_shortcode('related_posts_by_var', function($atts) {
$atts = shortcode_atts(['var' => ''], $atts);
$term = sanitize_text_field($atts['var']);
if (!$term) return '';
$args = [
'post_type' => 'post',
'posts_per_page' => 6,
'tag' => $term
];
$query = new WP_Query($args);
if (!$query->have_posts()) return '';
$display_type = get_option('rpc_display_type', 'default');
$columns = get_option('rpc_column_count', '3');
ob_start();
echo '';
while ($query->have_posts()) {
$query->the_post();
echo '
';
}
echo '
';
wp_reset_postdata();
return ob_get_clean();
});
XML Sitemap XML Sitemap Index