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

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

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

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

PHP

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

Q&A

解決済

1回答

2630閲覧

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

退会済みユーザー

退会済みユーザー

総合スコア0

WordPress

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

PHP

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

0グッド

0クリップ

投稿2018/01/23 05:25

編集2018/01/23 07:12

###前提・実現したいこと

下記のようなコードを子テーマのfunction.phpに追記して、自分でカスタマイズした人気記事のランキングを表示させるウィジェットを追加したいのですが、この記述のファイルをアップしたらサイト上で何も表示されなくなってしまいました。。。

こちらの記事を参考に試してみたのですが、どこの記述が原因で表示されないのかがわからなくて困っています。どなたかご教授お願い致します。
https://plusers.net/wordpress_popular_posts

使用している親テーマ:LION MEDIA
http://lionmedia.fit-jp.com/

/* 人気記事一覧ウィジェット */ class Popular_Posts extends WP_Widget { /*コンストラクタ*/ 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');

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2018/01/23 07:10

質問者様が行いたいのはLION MEDIAの人気記事一覧ウィジェットのソースコードを再利用しつつ、ウィジェットを使わずにランキングを表示したいということでよろしいですか。(質問文中に「「function.phpに~」という記事を何個も読みながら何回も試した」とあるので、親テーマの機能を使うことにこだわってないようにも見受けられたので確認です)
退会済みユーザー

退会済みユーザー

2018/01/23 07:18 編集

親テーマのコードを利用したほうが子テーマのfunction.phpのコード量も増えず、今後メンテしやすいかなと思ったのですが、それがうまくいかず、新たにfunction.phpに記述する方法も試してみたのですが、そちらもうまくいかず・・・というのがこの質問をするに至った経緯です。言葉足らずで申し訳ございません。
guest

回答1

0

ベストアンサー

LION MEDIAのコードを再利用するケースと参考にされたサイトのコードを利用するケースの両方を確認したので、記載します。

LION MEDIAのコードを再利用する場合

LION MEDIAの人気記事ランキングは投稿のメタ情報に閲覧数を記録する方式です。
そのため、この閲覧数を利用したい場合は以下のようなコードを記載することでランキングを表示できます。

PHP

1$args = array( 2 'meta_key'=> 'post_views_count', 3 'orderby' => 'meta_value_num', 4 'order' => 'DESC', 5 'posts_per_page' => 3, 6); 7$my_query = new WP_Query( $args ); 8 9echo '<ol>'; 10 11while ( $my_query->have_posts() ) : 12 $my_query->the_post(); 13 echo '<li><a href="' . get_the_permalink() .'">' . get_the_title() . '</a></li>'; 14endwhile; 15wp_reset_postdata(); 16 17echo '</ol>';

参考にされたサイトのコードを利用する場合

https://plusers.net/wordpress_popular_posts

PHP

1/* 人気記事一覧ウィジェット */ 2class Popular_Posts extends WP_Widget { 3/*コンストラクタ*/ 4function __construct() { 5parent::__construct( 6(以下略)

こちらのページに掲載のウィジェットのソースコードをfunctions.phpに記述して利用した場合についても、ウィジェットとして正常に動作することが確認できました。

この記述のファイルをアップしたらサイト上で何も表示されなくなってしまいました。。。

とのことなので、PHPのなんらかのエラー(おそらく構文エラー)が発生して、500エラーになっているものと思われます。
発生しているエラー内容を確認して、質問文に追記していただけますか。

投稿2018/01/23 07:50

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

退会済みユーザー

退会済みユーザー

2018/01/24 03:10

phpの閉じタグが重複しているのがエラーの原因でした....お教えいただいた親テーマのコードを利用する方法でアイキャッチや他のパーツもうまく表示されました!ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問