• Resolved kazskater99

    (@kazskater99)


    <?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)
  • Thread Starter kazskater99

    (@kazskater99)

    i changed url

    Thread Starter kazskater99

    (@kazskater99)

    // ウィークリーマテリアルデータの取得関数
    function get_weekly_materials_data() {
        // キャラクターのマテリアルデータの連想配列
        // マスターデータ...
    
        // キャラクターのデータを連想配列で定義
        $materialsData = [                   
            [
                'name' => 'Cloudseam Scale',
            ],
            // 他のデータ...
        ];
    
        return $materialsData;
    }
    
    // ウィジェットに渡すデータの取得関数
    function get_materials_data() {
        return get_weekly_materials_data();
    }
    
    // ウィジェットエリアの登録
    if (function_exists('register_sidebar')) {
        register_sidebar(array(
            'name' => esc_html__('Weekly Material Schedule Widget Area', 'text_domain'),
            'id' => 'weekly-material-schedule-widget-area',
            'description' => esc_html__('Add widgets here to display the weekly material schedule.', 'text_domain'),
            'before_widget' => '<div id="%1$s" class="widget %2$s">',
            'after_widget' => '</div>',
            'before_title' => '<h2 class="widget-title">',
            'after_title' => '</h2>',
        ));
    }
    <?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.') // ウィジェットの説明
            );
        }
    
        // ウィジェットの設定フォームを表示
        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) {
            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();
    
            // ウィジェットの HTML を表示
            if (is_wp_error($materialsData)) {
                // エラーメッセージを出力
                echo 'Error retrieving materials data: ' . $materialsData->get_error_message();
            } else {
                // データが正常に取得された場合
                echo 'Materials data retrieved successfully.';
                $this->display_widget_html($materialsData);
            }
    
            echo $args['after_widget'];
        }
    
        private function get_materials_data() {
            // テーマの functions.php で定義した関数を使ってマスターデータを取得
            $materialsData = get_weekly_materials_data();
            return $materialsData;
        }
    
        private function display_widget_html($materialsData) {
            ?>
            <div class="farming-schedule">
                <!-- テスト用の表示 -->
                <p>This is a test HTML. If you see this, the widget is working.</p>
    
                <!-- キャラクターのアセンション素材 -->
                <?php
                // キャラクターのアセンション素材に関する HTML 表示コードを追加する
                // 例として、$materialsData の内容を表示するコードを記述
                foreach ($materialsData as $material) {
                    echo "<p>{$material['name']}</p>"; // 仮の表示例
                }
                ?>
            </div>
            <?php
        }
    }
    
    // ウィジェットを登録
    function register_weekly_material_schedule_widget() {
        register_widget('Weekly_Material_Schedule_Widget');
    }
    
    add_action('widgets_init', 'register_weekly_material_schedule_widget');
    

    NO shown in Wideget crated HTML <p>{$material[‘name’]}</p>

    NO Error shown in dub file at all…

    HELP ME

    Thread Starter kazskater99

    (@kazskater99)

    // functions.php
    
    // ウィークリーマテリアルデータの取得関数
    function get_weekly_materials_data() {
        // キャラクターのマテリアルデータの連想配列
        // マスターデータ...
    
        // キャラクターのデータを連想配列で定義
        $materialsData = [                   
            [
                'name' => 'Cloudseam Scale',
            ],
            // 他のデータ...
        ];
    
        error_log('Weekly Materials Data: ' . print_r($materialsData, true)); // デバッグメッセージ
    
        return $materialsData;
    }
    
    // ウィジェットに渡すデータの取得関数
    function get_materials_data() {
        $data = get_weekly_materials_data();
    
        error_log('Materials Data: ' . print_r($data, true)); // デバッグメッセージ
    
        return $data;
    }
    
    // ウィジェットエリアの登録
    if (function_exists('register_sidebar')) {
        register_sidebar(array(
            'name' => esc_html__('Weekly Material Schedule Widget Area', 'text_domain'),
            'id' => 'weekly-material-schedule-widget-area',
            'description' => esc_html__('Add widgets here to display the weekly material schedule.', 'text_domain'),
            'before_widget' => '<div id="%1$s" class="widget %2$s">',
            'after_widget' => '</div>',
            'before_title' => '<h2 class="widget-title">',
            'after_title' => '</h2>',
        ));
    }
    <?php //Weekly_Material_Schedule_Widget.php?>
    
    <?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.') // ウィジェットの説明
            );
        }
    
       // ウィジェットの表示
    public function widget( $args, $instance ) {
        echo $args['before_widget'];
        
        if ( $instance['title'] ) {
            echo $args['before_title'] . $instance['title'] . $args['after_title'];
        }
    
        // マスターデータを取得する処理
        $materialsData = get_materials_data();
    
        // ウィジェットの HTML を表示
        ?>
        <div class="farming-schedule">
            <!-- テスト用の表示 -->
            <p>This is a test HTML. If you see this, the widget is working.</p>
    
            <!-- キャラクターのアセンション素材 -->
            <?php
            // キャラクターのアセンション素材に関する HTML 表示コードを追加する
            // 例として、$materialsData の内容を表示するコードを記述
            foreach ($materialsData as $material) {
                echo "<p>{$material['name']}</p>";
            }
            ?>
        </div>
        <?php
    
        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');
    

    NO shown in Wideget crated HTML <p>{$material[‘name’]}</p>

    NO Error shown in dub file at all…

    HELP ME

    Moderator Support Moderator

    (@moderator)

    @kazskater99 Please don’t post duplicate threads here: https://www.ads-software.com/support/topic/warning1-media_video-block-was-affected-by-errors/

    It clutters things up and makes it more difficult for people to help you.

Viewing 4 replies - 1 through 4 (of 4 total)
  • The topic ‘Not sure how to read widet customized’ is closed to new replies.