Not sure how to read widet customized
-
<?php class Weekly_Material_Schedule_Widget extends WP_Widget { public function __construct() { parent::__construct( 'weekly-material-schedule', // ウィジェットのID 'Weekly Material Schedule', // ウィジェットのタイトル array('description' => 'Display the weekly material farming schedule.') // ウィジェットの説明 ); } class Your_Widget_Class extends WP_Widget { // ウィジェットの設定フォームを表示 public function form($instance) { $title = !empty($instance['title']) ? $instance['title'] : esc_html__('New title', 'text_domain'); ?> <p> <label for="<?php echo esc_attr($this->get_field_id('title')); ?>"> <?php esc_attr_e('Title:', 'text_domain'); ?> </label> <input class="widefat" id="<?php echo esc_attr($this->get_field_id('title')); ?>" name="<?php echo esc_attr($this->get_field_name('title')); ?>" type="text" value="<?php echo esc_attr($title); ?>"> </p> <?php } // ウィジェットの表示 public function widget($args, $instance) { error_log('Debug: Widget function started.'); // デバッグメッセージ // ウィジェットの本体のコード... error_log('Debug: Widget function finished.'); // デバッグメッセージ } } private function get_materials_data() { // マスターデータを取得する実際の処理を記述する // これはサンプルであり、実際のデータ取得ロジックを組み込む必要があります // ウィジェット用のマスターデータ $materialsData = [ [ 'name' => 'Admonition', 'days' => 'Monday, Thursday', 'characters' => [ ['name' => 'Tighnari', 'image' => 'https://rerollcdn.com/GENSHIN/Characters/1/Tighnari.png', 'element' => 'Dendro', 'rarity' => 5], ['name' => 'Traveler (Dendro)', 'image' => 'https://rerollcdn.com/GENSHIN/Characters/1/Traveler (Dendro).png', 'element' => 'Dendro', 'rarity' => 5], ['name' => 'Cyno', 'image' => 'https://rerollcdn.com/GENSHIN/Characters/1/Cyno.png', 'element' => 'Electro', 'rarity' => 5], ['name' => 'Faruzan', 'image' => 'https://rerollcdn.com/GENSHIN/Characters/1/Faruzan.png', 'element' => 'Anemo', 'rarity' => 4], ['name' => 'Candace', 'image' => 'https://rerollcdn.com/GENSHIN/Characters/1/Candace.png', 'element' => 'Hydro', 'rarity' => 4], ], ], //新しいキャラクターの育成素材の追加 ]; return $materialsData; } public function widget($args, $instance) { echo $args['before_widget']; if (!empty($instance['title'])) { echo $args['before_title'] . apply_filters('widget_title', $instance['title']) . $args['after_title']; } // マスターデータを取得する処理を追加 $materialsData = $this->get_materials_data(); // 以下、以前のコードと同様の処理... usort($materialsData, function ($a, $b) { // 名前で比較 $nameComparison = strcmp($a['name'], $b['name']); // 名前が異なる場合 if ($nameComparison !== 0) { return $nameComparison; } }); $today = date('l'); // 今日の曜日を取得 $displayedIcons = []; // すでに表示されたアイコンの名前を保持する配列 $farmingSectionDisplayed = false; // farming-section charactersが表示されたかどうかのフラグ foreach ($materialsData as $set) { if (in_array($today, explode(', ', $set['days']))) { // farming-section charactersがまだ表示されていない場合 if (!$farmingSectionDisplayed) { echo "<div class='farming-section characters'>"; // farming-section charactersを開始 $farmingSectionDisplayed = true; // フラグを立てて表示済みとする echo " <div class='farming-list'>"; // farming-listを開始 } // farming-list-itemの開始 echo " <div class='farming-list-item'>"; echo " <div class='farming-icon-wrapper'>"; // キャラクターのタレントレベルに必要なアセンション素材のアイコン(画像)と名前を表示 echo " <img alt='{$set['name']}' class='farming-icon' src='https://rerollcdn.com/GENSHIN/Farming/NEW/{$set['name']}.png'>"; echo " <p>{$set['name']}</p>"; // farming-iconの名前を表示 echo " </div>"; echo " <div class='farming-characters'>"; foreach ($set['characters'] as $character) { // キャラクターの名前と画像を表示 echo " <div class='character-info'>"; echo " <a href='/characters/{$character['name']}' class='tierlist-portrait' style='order:-{$character['rarity']}'>"; echo " <img alt='{$character['name']}' class='tierlist-icon rarity-{$character['rarity']}' src='{$character['image']}'>"; echo " <img alt='{$character['element']}' class='tierlist-type' src='https://rerollcdn.com/GENSHIN/Elements/Element_{$character['element']}.png'>"; echo " </a>"; //echo " <p style='text-align: center;'>{$character['name']}</p>"; // 中央揃えに変更 echo " </div>"; } echo " </div>"; // farming-charactersの終了 echo " </div>"; // farming-list-itemの終了 // 各アセンション素材に対するアイコン名を取得し、重複表示を防ぐために$displayedIconsに追加する $iconKey = $set['name']; // 現在のアセンション素材のアイコン名 $displayedIcons[] = $iconKey; // 表示済みのアイコンの配列に追加 } } if ($farmingSectionDisplayed) { // farming-listの終了 echo " </div>"; // farming-section charactersの終了 echo "</div>"; } echo $args['after_widget']; } }
this is my-widget.php
// ウィジェットエリアの登録 function register_material_schedule_widget_area() { register_sidebar(array( 'name' => esc_html__('Weekly Material Schedule Widget Area', 'your-theme-textdomain'), 'id' => 'weekly-material-schedule-widget-area', 'description' => esc_html__('Add Weekly Material Schedule Widget here.', 'your-theme-textdomain'), 'before_widget' => '<section id="%1$s" class="widget %2$s">', 'after_widget' => '</section>', 'before_title' => '<h2 class="widget-title">', 'after_title' => '</h2>', )); } add_action('widgets_init', 'register_material_schedule_widget_area'); //Weekly_Material_Schedule_Widget // ウィジェット用のマスターデータ $materialsData = [ [ 'name' => 'Admonition', 'days' => 'Monday, Thursday', 'characters' => [ ['name' => 'Tighnari', 'image' => 'https://rerollcdn.com/GENSHIN/Characters/1/Tighnari.png', 'element' => 'Dendro', 'rarity' => 5], ['name' => 'Traveler (Dendro)', 'image' => 'https://rerollcdn.com/GENSHIN/Characters/1/Traveler (Dendro).png', 'element' => 'Dendro', 'rarity' => 5], ['name' => 'Cyno', 'image' => 'https://rerollcdn.com/GENSHIN/Characters/1/Cyno.png', 'element' => 'Electro', 'rarity' => 5], ['name' => 'Faruzan', 'image' => 'https://rerollcdn.com/GENSHIN/Characters/1/Faruzan.png', 'element' => 'Anemo', 'rarity' => 4], ['name' => 'Candace', 'image' => 'https://rerollcdn.com/GENSHIN/Characters/1/Candace.png', 'element' => 'Hydro', 'rarity' => 4], ], ], [ 'name' => 'Freedom', 'days' => 'Monday, Thursday', 'characters' => [ ['name' => 'Eula', 'image' => 'https://rerollcdn.com/GENSHIN/Characters/1/Eula.png', 'element' => 'Cryo', 'rarity' => 5], ['name' => 'Rosaria', 'image' => 'https://rerollcdn.com/GENSHIN/Characters/1/Rosaria.png', 'element' => 'Cryo', 'rarity' => 4], ['name' => 'Xingqiu', 'image' => 'https://rerollcdn.com/GENSHIN/Characters/1/Xingqiu.png', 'element' => 'Hydro', 'rarity' => 4], ], ], // widget メソッドなどはそのまま... public function widget($args, $instance) { echo $args['before_widget']; if (!empty($instance['title'])) { echo $args['before_title'] . apply_filters('widget_title', $instance['title']) . $args['after_title']; } // マスターデータを取得 $materialsData = get_materials_data(); // ここから先は元のコードと同じ // ... echo $args['after_widget']; } } // ウィジェットの登録 function register_weekly_material_schedule_widget() { register_widget('Weekly_Material_Schedule_Widget'); } add_action('widgets_init', 'register_weekly_material_schedule_widget');
fucntion.php
help me first time to do this
Viewing 4 replies - 1 through 4 (of 4 total)
Viewing 4 replies - 1 through 4 (of 4 total)
- The topic ‘Not sure how to read widet customized’ is closed to new replies.