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

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

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

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

PHP

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

2回答

1872閲覧

WordPressの固定ページにカテゴリ

jackie1993427

総合スコア66

WordPress

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

PHP

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2016/09/13 10:07

編集2016/09/13 10:40

お世話になります。
WordPressを利用して商品の一覧サイトを作成しております。

###実現したいこと
現在トップページに指定している固定ページに、商品一覧(カテゴリ)を表示させたい。

###前提
GK Portfolioというテーマをベースに作成
こちらのサイトを参考に、表示させようと思いましたが、そもそも指定するphpを作成することができず...(phpに関しての知識がないため)

###発生した問題

test.phpというファイルを作成し、

PHP

1<?php 2get_header(); ?> 3 4 <div id="primary" class="content-area"> 5 <div id="content" class="site-content archive" role="main"> 6 7 <?php if (have_posts()) : ?> 8 <header class="archive-header"> 9 <h1 class="archive-title"><?php printf( __('Category Archives: %s', 'portfolio'), '<strong>' . single_cat_title('', false) . '</strong>'); ?></h1> 10 11 <?php if (category_description()) : ?> 12 <div class="archive-meta"><?php echo category_description(); ?></div> 13 <?php endif; ?> 14 </header><!-- .archive-header --> 15 16 <?php while (have_posts()) : the_post(); ?> 17 <?php get_template_part('content-archive', get_post_format()); ?> 18 <?php endwhile; ?> 19 20 <?php else : ?> 21 <?php get_template_part('content', 'none'); ?> 22 <?php endif; ?> 23 24 </div><!-- #content --> 25 <?php portfolio_paging_nav(); ?> 26 </div><!-- #primary --> 27 28<?php get_footer(); ?>

を記述いたしました。

functions.phpに、

PHP

1function Include_my_php($params = array()) { 2 extract(shortcode_atts(array( 3 'file' => 'default' 4 ), $params)); 5 ob_start(); 6 include(get_theme_root() . '/' . get_template() . "/test.php"); 7 return ob_get_clean(); 8} 9 10add_shortcode('myphp', 'Include_my_php');

という記述をし、
固定ページ側に[myphp file=’test’]を記述したところ、
トップページ内に「カテゴリが見つからない」旨のメッセージがループして延々と下まで
表示されている状態となりました。
そもそも指定するphpの内容が間違えているのではないかと思いますが、
知識が乏しいため、どのようにすればよいかわからず,,,

どなたかご教示いただけないでしょうか。
説明が不足しているようでしたらご指摘ください。追記いたします。

何卒よろしくお願い申し上げます。

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2016/09/13 10:49

上記のソースコードはバッドノウハウなので、いますぐに利用を中止されることをオススメします。
guest

回答2

0

以下は、指定カテゴリーの記事一覧を表示させるショートコードを実装するソースコードです。これは、私がよく使うショートコードです。

簡単な説明をソースコード表示の下に記述しているのでお読みください。

特定カテゴリーの記事一覧を表示するソースコード

php

1function kuck1u_47888_shortcode_post( $atts ) { 2 $atts = shortcode_atts( array( 3 'cat' => null, 4 'cat_name' => null, 5 ), $atts, 'postlist' ); 6 $args = array( 7 'post_type' => 'post', 8 'post_status' => 'publish', 9 'nopaging' => true, 10 'posts_per_page' => '-1', 11 ); 12 $output = array(); 13 14 if ( isset( $atts['cat'] ) && ! empty( $atts['cat'] ) ) { 15 $args['cat'] = preg_replace( '/[^0-9,]/', '', $atts['cat'] ); 16 } 17 18 if ( isset( $atts['cat_name'] ) && ! empty( $atts['cat_name'] ) ) { 19 $args['category_name'] = preg_replace( '/[^\w\-,]/', '', $atts['cat_name'] ); 20 } 21 22 if ( isset( $atts['cat'] ) && isset( $atts['cat_name'] ) ) { 23 unset( $args['cat'] ); 24 } 25 26 $query = new WP_Query( $args ); 27 28 if ( $query->have_posts() ) { 29 while ( $query->have_posts() ) { 30 $query->the_post(); 31 ob_start(); 32 get_template_part( 'content', 'archive' ); 33 $output[] = trim( ob_get_contents() ); 34 ob_end_clean(); 35 } 36 } 37 38 wp_reset_postdata(); 39 40 return implode( PHP_EOL, $output ); 41} 42add_shortcode( 'postlist', 'kuck1u_47888_shortcode_post' );

使い方

固定ページにショートコードを記述します。例えば、カテゴリーID: 996の記事一覧を表示したい場合は以下のようになります。

html

1[postlist cat="996"]

カテゴリーIDが分からない!ということはよくあることなので、カテゴリースラッグでも指定可能です。

html

1[postlist cat_name="wordpress"]

複数のカテゴリーを指定したい場合は、カンマ区切りで指定します。

html

1[postlist cat="996,966"] 2[postlist cat_name="wordpress,teratail"]

表示のカスタマイズ

表示のカスタマイズは、ソースコードのget_template_part( 'content', 'archive' );の部分で行えます。初期では、テーマディレクトリ内のcontent-archive.phpが呼び出されるようになっています。例えば、get_template_part( 'content', 'teratail' );に変更した場合は、テーマディレクトリ内のcontent-teratail.phpが呼び出されるようになります。

content-XXXXX.phpを作成する注意点として、get_header()関数、get_footer()関数、get_sidebar()関数は不要です。

その他のカスタマイズ

記事の呼び出しは、WP_Queryを使用しているだけなので、$args変数の部分を変更すれば、好きに変えられます。例えばタームを表示することも、表示件数を変更することも可能です。

パフォーマンスについて

パフォーマンスが気になる場合は、Transient APIを組み合わせるといい感じになると思います。上記のソースコードでは記述していませんが、実際の案件ではよく利用します。

上記のソースコードの場合、returnの前で$output変数の内容をTransient APIで30m〜1hほどキャッシュさせると、だいぶ負荷も軽減されると思います。もっと踏み込む場合、24hキャッシュとかにして、記事が更新されたタイミングでキャッシュをクリアする処理を入れるとかするといいと思います(私は面倒なのでそこまでしませんが)。

投稿2016/09/13 11:54

編集2016/09/13 13:09
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

jackie1993427

2016/09/14 09:11

回答ありがとうございます。非常にわかりやすくお答え頂き助かります。 こちら記述が漏れておりましたが、カスタム投稿フォームを使用しており、 スラッグで試したところ、うまく表示されませんでした。 通常の投稿で試したところ、すごく大きく1つの投稿が出てしまいましたが、 表示することができたので問題ないかと思います。 すみませんが、再度お力添えいただけないでしょうか。
退会済みユーザー

退会済みユーザー

2016/09/14 10:04 編集

上記の説明にも記載させていただきましたが、カスタム投稿タイプ、カスタム分類(タクソノミー)を使用しているのであれば、$args変数(上記ソースコードの6行目付近)の部分を変更すれば好きに変えられます。WP_Queryに渡す値と一緒です。 WP_Queryについては公式ドキュメントをご覧ください。 https://wpdocs.osdn.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/WP_Query 表示デザインの変更は、上記説明に記載されている"表示のカスタマイズ"の部分をご覧ください。 >こちら記述が漏れておりましたが 後出しジャンケンは止めてください^^ 何回も回答しなくてはいけなくなるので、お互いに時間が無駄に消費されてしまいます。あと、読むの面倒だとは思いますが、説明部分読んでくださいね。
jackie1993427

2016/09/14 10:46

すみません、そもそもの基礎知識が足りないようで、 >記事の呼び出しは、WP_Queryを使用しているだけなので、$args変数の部分を変更すれば、好きに変えられます。例えばタームを表示することも、表示件数を変更することも可能です。 の部分読ませていただきましたが、表示方法や件数のみ変更できるものだと思っておりました。 調べつつ、いただいたものを参考に進めていきます。
退会済みユーザー

退会済みユーザー

2016/09/14 12:20

WP_QueryはWordPressの心臓部分なので、WP_Queryを扱えるようにならないと、WordPressのカスタマイズは結構厳しいです。ただ、WP_Queryが使えるようになってしまえば、あとはPHPの知識なのでどうとでもなる感じです。頑張ってください!
jackie1993427

2016/09/20 02:22

度々申しわけありません。もう少々お力添えいただけたらと思います。 function kuck1u_47888_shortcode_post( $atts ) { $atts = shortcode_atts( array( 'cat' => null, 'cat_name' => null, ), $atts, 'postlist' ); $args = array( 'taxonomy' => 'product_category', 'field' => 'slug', 'terms' => 't-shirt', ); $output = array(); if ( isset( $atts['cat'] ) && ! empty( $atts['cat'] ) ) { $args['cat'] = preg_replace( '/[^0-9,]/', '', $atts['cat'] ); } if ( isset( $atts['cat_name'] ) && ! empty( $atts['cat_name'] ) ) { $args['category_name'] = preg_replace( '/[^\w\-,]/', '', $atts['cat_name'] ); } if ( isset( $atts['cat'] ) && isset( $atts['cat_name'] ) ) { unset( $args['cat'] ); } $query = new WP_Query( $args ); if ( $query->have_posts() ) { while ( $query->have_posts() ) { $query->the_post(); ob_start(); get_template_part( 'content', 'archive' ); $output[] = trim( ob_get_contents() ); ob_end_clean(); } } wp_reset_postdata(); return implode( PHP_EOL, $output ); } add_shortcode( 'postlist', 'kuck1u_47888_shortcode_post' ); という感じに$argsの部分変更いたしました。 こちら、(https://wpdocs.osdn.jp/関数リファレンス/WP_Query)を参考に変更してみましたが、間違えておりますでしょうか。 いただいたものでfunctions.phpに追記すると部分的に表示されますが、こちらですと全く反応がなく... 恐縮ですがご教示いただけますでしょうか。
guest

0

こちらのブログ記事を参考にしてみてはいかがでしょうか。

WordPressでトップページに固定ページと投稿ページを表示する | RuputerFan
http://sygnas.jp/2010/10/19/frontfix/

投稿2016/09/13 10:47

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

退会済みユーザー

退会済みユーザー

2016/09/13 10:49

あ、既にやりかけのコードがあったんですね。失礼しました……
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問