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

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

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

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

PHP

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

Q&A

解決済

1回答

1688閲覧

wordpressページネーションを特定のカスタムポストタイプで非表示にしたい

shimirey

総合スコア12

WordPress

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

PHP

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

0グッド

0クリップ

投稿2018/11/06 11:51

■環境
wordpress4.9.8
使用テーマ http://preview.themeforest.net/item/zephyr-material-design-theme/

■実現したいこと
現在、zephyrというテーマの機能で、ブログページで次の投稿と前の投稿が表示されるページネーションをONにする設定にしております。
イメージ説明

この設定でカスタムポストタイプのページでもこの機能が有効になるのですが、
特定のカスタムポストタイプのページだけはこのページネーション機能をOFFにしたいとおもっております。
CSSでdisplay:noneするのではなく、出力条件を変えたいのですが、どのような記述にすればいいかお助けいただけませんでしょうか?

ページネーション部分を含むテーマのテンプレートファイルのコードは以下のようになっております。

PHP

1 2 <?php 3 while ( have_posts() ) { 4 the_post(); 5 6 $the_content = apply_filters( 'the_content', get_the_content() ); 7 8 // The page may be paginated itself via <!--nextpage--> tags 9 $pagination = us_wp_link_pages( 10 array( 11 'before' => '<div class="w-blog-pagination"><nav class="navigation pagination">', 12 'after' => '</nav></div>', 13 'next_or_number' => 'next_and_number', 14 'nextpagelink' => '>', 15 'previouspagelink' => '<', 16 'link_before' => '<span>', 17 'link_after' => '</span>', 18 'echo' => 0, 19 ) 20 ); 21 22 // If content has no sections, we'll create them manually 23 $has_own_sections = ( strpos( $the_content, ' class="l-section' ) !== FALSE ); 24 if ( ! $has_own_sections ) { 25 $the_content = '<section class="l-section"><div class="l-section-h i-cf">' . $the_content . $pagination . '</div></section>'; 26 } elseif ( ! empty( $pagination ) ) { 27 $the_content .= '<section class="l-section"><div class="l-section-h i-cf">' . $pagination . '</div></section>'; 28 } 29 30 echo $the_content; 31 32 // Post comments 33 if ( comments_open() OR get_comments_number() != '0' ) { 34 // Hotfix for events calendar plugin 35 if ( ! is_post_type_archive( 'tribe_events' ) ) { 36 ?> 37 <section class="l-section for_comments"> 38 <div class="l-section-h i-cf"><?php 39 wp_enqueue_script( 'comment-reply' ); 40 comments_template(); 41 ?></div> 42 </section><?php 43 } 44 } 45 } 46 ?> 47

自分で試したこととしては、
条件分岐はひとまず後で書くとして、ページネーションを非表示にできるようにするためfunctions.phpに

PHP

1remove_filter('the_content', 'pagination');

と書いてみましたが、変化なしでした。
アクションフックやフィルターフックの使い方自体が
よく理解できてないところもあり、かなり的外れなコードかもしれませんが、
何卒ご教示お願いいたします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

us_wp_link_pages()がどのようなコードなのか分からないので条件分岐で。

} elseif ( ! empty( $pagination ) ) { ↓のように変更 } elseif ( ! empty( $pagination ) && get_post_type( get_the_ID() ) !== '除外したい投稿タイプ名' ) {

条件分岐が嫌ならus_wp_link_pages()の開示をどうぞ。

追記

<?php if ( us_get_option( 'post_nav' ) AND ! empty( $prevnext ) && ! in_array( get_post_type(), array( 'A', 'B', 'C' ) ): ?>

とか。

投稿2018/11/06 13:03

編集2018/11/07 00:34
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

shimirey

2018/11/06 19:21 編集

回答いただきありがとうございます! us_wp_link_pages()の元コードの記載場所が見つけられなかったので、 ご教示いただいたコードにテンプレートファイルを修正しました。 実は下記を変更しても修正できなかったので、よく見直してみたら 出力しているコードが別の箇所にありました。 失礼いたしました。それが下記になります。 1つの投稿タイプを除外したい場合は、 ご教示いただいた && get_post_type( get_the_ID() ) !== '除外したい投稿タイプ名' でいけたのですが、複数の投稿タイプを除外に設定がうまくできませんでした。 もしよろしければこれを複数の投稿タイプ除外にするには、どのようにコードを変えればいいかヒントをいただけないでしょうか?何卒よろしくお願いいたします。 <?php if ( us_get_option( 'post_nav' ) AND ! empty( $prevnext ) && get_post_type( get_the_ID() ) !== 'hogehoge' ): ?> <section class="l-section for_blognav"> <div class="l-section-h i-cf"> <div class="w-blognav"> <?php foreach ( $prevnext as $key => $item ): ?> <a class="w-blognav-<?php echo $key ?>" href="<?php echo $item['link'] ?>"> <span class="w-blognav-meta"><?php echo $item['meta'] ?></span> <span class="w-blognav-title"><?php echo $item['title'] ?></span> </a> <?php endforeach; ?> </div> </div> </section> <?php endif; ?>
shimirey

2018/11/07 04:05

上記ページ参考に !is_singular( array( 'newspaper', 'book' ) ); で除外条件でいけました! 大変助かりました、ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問