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

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

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

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

Q&A

解決済

1回答

1245閲覧

すべての固定ページの出力

avantgarden

総合スコア121

WordPress

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

0グッド

0クリップ

投稿2017/05/13 15:07

編集2017/05/13 15:13

すべての固定ページのデータを、カスタムフィールドを含めて出力したいのですが、方法がわかりません。

普通にDBから取得したような形で、

$args = array( 'sort_order' => 'ASC', 'sort_column' => 'post_title', 'hierarchical' => 1, 'exclude' => '', 'include' => '', 'meta_key' => '', 'meta_value' => '', 'authors' => '', 'child_of' => 0, 'parent' => -1, 'exclude_tree' => '', 'number' => '', 'offset' => 0, 'post_type' => 'page', 'post_status' => 'publish' ); $pages = get_pages( $args ); $pages = get_pages();

としたのですが、カスタムフィールドは出力されません。
(別テーブルなのでしょうか?)

あまりワードプレスに慣れてないもので、ご教示いただけると幸いです。

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

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

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

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

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

guest

回答1

0

ベストアンサー

投稿2017/05/13 15:17

kei344

総合スコア69407

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

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

avantgarden

2017/05/13 16:08

このテーブル構造だと、post_idを条件にカスタムフィールドのレコードを取得して、get_pagesにマージさせていくというゴリ押し的な方法しか無理なのでしょうか…
kei344

2017/05/13 17:07

どのように利用したいのかがわかりませんが、SQLを使えば出来るとは思います。ただ単にCSVを出力するのであれば、プラグインなどもあります。 【PHP - WordpressでSQL文を使ってカスタムフィールドを表示させたい(23200)|teratail】 https://teratail.com/questions/23200
avantgarden

2017/05/14 12:14

ありがとうございます。 サイトのワードプレス化をしてまして、バナー画像を管理画面で複数登録できるようにし(リンクのURLや表示順、altなども合わせて登録)、トップページでカルーセル表示させるという場面での質問でした。 たぶん、固定ページ自体は無いので、固定ページをカスタマイズしてたのですが、明示的なSQLでしか出せないようなら方法としては良くなさそうですね。 ちなみにまだ試せてないですが、「カスタム投稿タイプ+advances custom fields」でカスタムフィールドを含め一覧で出す(表面的にはカルーセルなので一覧ではないですが)方法だと、WP標準の(?)関数で出力できるでしょうか。
kei344

2017/05/14 13:44 編集

> 固定ページ自体は無いので、固定ページをカスタマイズしてたのですが 固定ページをカルーセルの1枚として表示をさせる予定でしょうか。 WordPressの組み方としては WP_Query で固定ページを呼び出し、それをループしながらカスタムフィールドをそのつど取り出して行く「DBアクセス何回するつもり?」という方法が普通です。 一括で必要な情報をDBから得てエレガントに使うことは出来ない(しない)構造になっています。 なので下記のようになります。 $args = array( 'post_type' => 'page', 'post_status' => 'draft', // ページとして表示しないならこうしないと勝手にページとして表示される 'posts_per_page' => 10, ); $the_query = new WP_Query( $args ); // ループ if ( $the_query->have_posts() ) : while ( $the_query->have_posts() ) : $the_query->the_post(); echo get_field( ’URL’ ); endwhile;endif; // 投稿データをリセット wp_reset_postdata(); それよりか、1枚の固定ページにカスタムフィールドを複数書いてそれを読み込むほうが良い気がします。(ACFの「繰り返しフィールド」は有料ですがSCF(Smart Custom Fields)やCFS(Custom Field Suite)は無料です) ちなみにACFはデータの持ち方が(一部)特に特殊なのでSQLでの取得に不向きです。 【WordPress のカスタムフィールドを簡単・便利に使えるようになるプラグイン「Smart Custom Fields」作った。 – モンキーレンチ】 https://2inc.org/blog/2014/10/09/4426/ 【WordPress でカスタムフィールドを簡単に設定できるプラグインを作成していてハマったところ – モンキーレンチ】 https://2inc.org/blog/2014/09/23/4404/
avantgarden

2017/05/15 08:31

ありがとうございます。 前半の内容で出力できそうです。 後半の内容も、参考にさせていただきます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問