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

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

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

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

PHP

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

Q&A

解決済

2回答

317閲覧

WordPress ウィジットをページにより非表示にしたい

退会済みユーザー

退会済みユーザー

総合スコア0

WordPress

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

PHP

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

0グッド

0クリップ

投稿2018/07/12 14:28

編集2018/07/13 05:03

前提・実現したいこと

WordPressのテンプレート「LION Media」を使ってブログを作成中です。

LION Media デモサイト → http://lionmedia.fit-jp.com/

こちらのサイドバーにある「最近の投稿」などの項目をトップページでは非表示に、記事ページでは表示するよう変更したいです。

WordPressもPHPも初心者なので、分かる方がいましたら教えていただけると嬉しいです。よろしくお願い致します。

該当のソースコード

↓↓↓新着記事ウィジットのPHP(親テーマ内のfunctions.php)↓↓↓

php

1////////////////////////////////////////////////// 2//新着記事ウィジェットアイテムのフォーマット変更(サムネイル追加) 3////////////////////////////////////////////////// 4class fit_recent_posts_widget extends wp_widget_recent_posts { 5 function widget($args, $instance) { 6 extract( $args ); 7 $title = apply_filters('widget_title', empty($instance['title']) ? __('Recent Posts') : $instance['title'], $instance, $this->id_base); 8 9 if( empty( $instance['number'] ) || ! $number = absint( $instance['number'] ) ) 10 $number = 10; 11 12 $r = new WP_Query( apply_filters( 'widget_posts_args', array( 'posts_per_page' => $number, 'no_found_rows' => true, 'post_status' => 'publish', 'ignore_sticky_posts' => true ) ) ); 13 if( $r->have_posts() ) : 14 15 echo $before_widget; 16 if( $title ) echo $before_title . $title . $after_title; ?> 17 <ol class="imgListWidget"> 18 <?php while( $r->have_posts() ) : $r->the_post(); ?> 19 <li class="imgListWidget__item"> 20 <a class="imgListWidget__borderBox" href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><span> 21 <?php if ( has_post_thumbnail()): ?> 22 <?php the_post_thumbnail('thumbnail'); ?> 23 <?php else: ?> 24 <img src="<?php echo get_template_directory_uri(); ?>/img/img_no_thumbnail.gif" alt="NO IMAGE"> 25 <?php endif; ?> 26 </span></a> 27 <h3 class="imgListWidget__title"> 28 <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a> 29 <?php if( !empty( $instance['show_date'] )): ?><span class="post-date"><?php the_time('Y.m.d'); ?></span><?php endif; ?> 30 </h3> 31 </li> 32 <?php endwhile; ?> 33 </ol> 34 <?php 35 echo $after_widget; 36 37 wp_reset_postdata(); 38 endif; 39 } 40} 41function fit_recent_widget_registration() { 42 unregister_widget('wp_widget_recent_posts'); register_widget('fit_recent_posts_widget'); 43} 44add_action('widgets_init', 'fit_recent_widget_registration');

試したこと

参考にしている記事 → https://www.studiobrain.net/10958
こちらの「★トップページ(ホームとフロントページ)にだけ表示したくない場合」のコードの中に上記のコードをそのまま入れてみましたがエラーが起こります。

php

1<?php if ( !is_home() && !is_front_page() ) : ?> 2ここに上記の「新着記事ウィジェットアイテムのフォーマット変更(サムネイル追加)」の中身をコピー 3<?php endif; ?>

補足情報(FW/ツールのバージョンなど)

LION Media デモサイト → http://lionmedia.fit-jp.com/

参考にしている記事 → https://www.studiobrain.net/10958

追記

CHERRYさんの教えていただいた通りにコードを変えてみましたができませんでした。

php

1function fit_recent_widget_registration() { 2 unregister_widget('wp_widget_recent_posts');  //ここを↓に持ってきてもダメでした 3 if ( is_single() ){ 4 register_widget('fit_recent_posts_widget'); 5 } 6}

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

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

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

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

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

guest

回答2

0

ベストアンサー

こちらのサイトを参考にプラグインを追加しました。
https://moonys-house.com/2018/04/14/post-1611/

【ウィジェットのロジック】の欄に
https://www.studiobrain.net/10958
こちらのサイトを参考に

!is_home() && !is_front_page()

と入力したらトップページ以外のページでのみ表示されるようになりました。

投稿2018/07/13 05:23

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

0

参考サイトだけでなく、どのようなことを試したか記載して欲しいところですが...


個別投稿のページだけで、ウィジットを表示したいのであれば、is_single() で個別投稿ページを判断できるので、ファンクションの中で、下記のように条件分岐させるのが簡単でしょう

php

1if ( is_single() ){ 2 // ウィジットの登録処理を書く 3}

条件分岐タグ 参照


(追記 2018.07.13 13:47)
コメント欄では、インデントがつかなかったので、解答欄にも追記。 fit_recent_widget_registration を以下のように書き換えて

function fit_recent_widget_registration() { if ( is_single() ){ unregister_widget('wp_widget_recent_posts'); register_widget('fit_recent_posts_widget'); } }

で、どうでしょうか?

投稿2018/07/13 03:37

編集2018/07/13 04:48
CHERRY

総合スコア25171

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

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

退会済みユーザー

退会済みユーザー

2018/07/13 04:44 編集

回答ありがとうございます。 試したことの記載が漏れていました。すみません。参考サイトに書いてあるコードで上記の「新着記事ウィジットのPHP」を囲んでみましたがダメでした。 教えていただいたコードの中に上記のコードを入れてみましたができませんでした。そういうことではないのでしょうか。 WordPressもPHPも初心者なので理解が間違っていたらすみません。 あと「個別投稿のページだけ表示」ではなく「トップ以外のページ全てに表示」を希望してます。
CHERRY

2018/07/13 04:45 編集

出先なので、テストできていませんが... widget を登録する処理で判断するのが良さそうです。 fit_recent_widget_registration を下記のように書き換えて ``` function fit_recent_widget_registration() { if ( is_single() ){ unregister_widget('wp_widget_recent_posts'); register_widget('fit_recent_posts_widget'); } } ``` で、どうでしょうか?
CHERRY

2018/07/13 04:49

あ、もしかすると `unregister_widget('wp_widget_recent_posts');` は、if の前に出すがいいかもしれません。
退会済みユーザー

退会済みユーザー

2018/07/13 05:00 編集

出先からありがとうございます。 教えていただいた通りに書き換えてみましたが、unregister~をifの前に移動する前も後もダメでした…移動後のコードを追記欄に残しておきます。 教えていただいたのにすみません。 ■変更後はアイキャッチ画像が消えただのリスト(箇条書き)になる&トップページから消えない という状態です。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問