質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

1538閲覧

wordpressでサイドバーに人気記事のランキングをプラグインを使わずにfunction.php記述で表示させたい。

fukka

総合スコア15

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2018/10/20 22:17

編集2018/10/20 22:22

前提・実現したいこと

下記のようなコードを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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

テーマのfunctions.phpに追加するんです。
テーマの中にfunctions.phpが無ければ作成してください。
編集した/wp-includes/functions.phpは元に戻してください。

投稿2018/10/21 04:27

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fukka

2018/10/21 07:19

回答ありがとうございます! 正常にウィジェットに追加できました。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問