前提・実現したいこと
下記のようなコードをfunction.phpに追記して、自分でカスタマイズした人気記事のランキングを表示させるウィジェットを追加したいのですが、この記述のファイルをアップしたらサイト上で以下の発生しているエラーメッセージが表示されました。
こちらの記事を参考に試してみたのですが、どこの記述が原因で表示されないのかがわからなくて困っています。どなたかご教授お願い致します。
https://plusers.net/wordpress_popular_posts
発生している問題・エラーメッセージ
Fatal error: Class 'WP_Widget' not found in /home/~~~/public_html/wp-includes/functions.php on line 6152
該当のソースコード
/* 人気記事一覧ウィジェット */ class Popular_Posts extends WP_Widget { ←ここが6152行目 /*コンストラクタ*/ function __construct() { parent::__construct( 'popular_posts', '人気記事 - myCustom', array( 'description' => 'PV数の多い順で記事を表示 - myCustom' ) ); } /*ウィジェット追加画面でのカスタマイズ欄の追加*/ function form($instance) { ?> <p> <label for="<?php echo $this->get_field_id('title'); ?>"><?php _e('タイトル:'); ?></label> <input type="text" class="widefat" id="<?php echo $this->get_field_id('title'); ?>" name="<?php echo $this->get_field_name('title'); ?>" value="<?php echo esc_attr( $instance['title'] ); ?>"> </p> <p> <label for="<?php echo $this->get_field_id('number'); ?>"><?php _e('記事表示件数:'); ?></label> <input type="text" id="<?php echo $this->get_field_id('limit'); ?>" name="<?php echo $this->get_field_name('number'); ?>" value="<?php echo esc_attr( $instance['number'] ); ?>" size="3"> </p> <?php } /*カスタマイズ欄の入力内容が変更された場合の処理*/ function update($new_instance, $old_instance) { $instance = $old_instance; $instance['title'] = strip_tags($new_instance['title']); $instance['number'] = is_numeric($new_instance['number']) ? $new_instance['number'] : 5; return $instance; } /*ウィジェットのに出力される要素の設定*/ function widget($args, $instance) { extract($args); echo $before_widget; if(!empty($instance['title'])) { $title = apply_filters('widget_title', $instance['title'] ); } if ($title) { echo $before_title . $title . $after_title; } else { echo '<h4>人気記事</h4>'; } $number = !empty($instance['number']) ? $instance['number'] : get_option('number'); ?> <!--ここにウィジェットとして呼び出したい要素を記述--> <aside class="sidekiji"> <ul> <?php get_the_ID();//記事のPV情報を取得する $args = array('meta_key'=> 'post_views_count',//投稿数をカウントするカスタムフィールド名 'orderby' => 'meta_value_num', 'order' => 'DESC', 'posts_per_page' => $number ); $my_query = new WP_Query( $args );?> <?php while ( $my_query->have_posts() ) : $my_query->the_post(); $loopcounter++; ?> <li> <a href="<?php the_permalink(); ?>"> <!--順位--> <span class="rank-count r-count<?php echo $loopcounter; ?>"> <?php echo $loopcounter; ?> </span> <!--サムネイル画像の追加--> <?php if( has_post_thumbnail() ): ?> <?php the_post_thumbnail('thumbnail'); ?> <?php endif; ?> <div class="sidekiji-text"> <?php the_title(); ?> <br> <!--タイトル--> <?php the_title(); ?> <!--カテゴリ--> <span class="cat-data"> <?php if( has_category() ): ?> <?php $postcat=get_the_category(); echo $postcat[0]->name; ?> <?php endif; ?></span> </div> </a> </li> <?php endwhile; ?> <?php wp_reset_postdata(); ?> </ul> </aside> <!-- / ここにウィジェットとして呼び出したい要素を記述--> <?php echo $after_widget; } } register_widget('Popular_Posts');
試したこと
WP_Widgetが含まれるフォルダを再アップロードした
補足情報(FW/ツールのバージョンなど)
記事のアクセス数をプラグインなしで計測しWordPressの管理画面に表示するは正常にできています。
WordPressのバージョン 4.9.8?ja
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/10/21 07:19