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

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

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

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

PHP

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

Q&A

2回答

2278閲覧

カスタムフィールドの値を全て出力する方法

退会済みユーザー

退会済みユーザー

総合スコア0

WordPress

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

PHP

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

0グッド

1クリップ

投稿2018/05/16 04:56

###やりたいこと
投稿IDの指定をせず、トップページにフィールド名'cf_sample'に登録された値を全て出力したいのですが、どうしたらいいでしょうか?

プラグイン:Smart Custom Fields
カスタムフィールドタイプ:チェックボックス
値の種類:A、B、C、Dの4つ

###やってみたこと
次のように書くと、Aしか出力されませんでした。(>_<)

php

1<?php 2$cf_sample = SCF::get('cf_sample'); 3foreach ($cf_sample as $field) { 4 echo $field; 5} 6?>

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

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

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

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

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

CHERRY

2018/05/17 08:16

Smart Custom Fields で定義したカスタムフィールドのチェックボックスの「ラベル」を取得したいということでしょうか? それとも 全部の投稿の値を取り出したい?
退会済みユーザー

退会済みユーザー

2018/05/17 20:41

失礼いたしました。「ラベルを取得したいということ」です。こんなに難しそうなものだとは思っておりませんでした。。
guest

回答2

0

各々任意に入力された値を全部取得したいなら
$wpdb使って直にpostmetaテーブルから取るしかないですかね

php

1global $wpdb; 2$all_cf_sample_values=$wpdb->get_col($wpdb->prepare( 3 "SELECT meta_value from {$wpdb->postmeta} WHERE meta_key = 'cf_sample';" 4)); 5

チェックボックスの選択項目として登録した値を取得したいとかなら…
まあ、DBのどっかに入ってるでしょう、wp_optionsにでも入れてるかな?
SCFのことは知らないのでなんともわからんですね

投稿2018/05/16 06:51

編集2018/05/16 06:52
KazuhiroHatano

総合スコア7802

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

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

退会済みユーザー

退会済みユーザー

2018/05/16 08:43

いつもありがとうございます。 >チェックボックスの選択項目として登録した値を取得したい というパターンです。そんなに複雑になるんですね。ちゃきっと簡単に出力できそうなイメージでおりました…。
KazuhiroHatano

2018/05/16 08:57

登録された選択項目をどこに保存するかはプラグイン次第 自分がかつて使っていたカスタムフィールド系のプラグインは wp_optionsに設定がまとめて入ってましたね まあSCFクラスには選択項目取得のメソッドぐらいありそうではあります
退会済みユーザー

退会済みユーザー

2018/05/17 20:42

色々な開発に携わったご経験があると、利用したことがないプラグインについても予想が立てられてかっこいいですね!ありがとうございます。また思いつくことがありましたらいつでも仰ってください。
guest

0

Smart Custom Fields で定義したカスタムフィールドのチェックボックスの「ラベル」を取得したいということなので・・・

SQLでデータベースを直接検索せずに WordPress の関数で書くならこんな感じでしょうか。

php

1$scf_posts = get_posts(array('post_type' => 'smart-custom-fields', 'post_title' =>'Smart Custom Fieldsのカスタムフィールドのタイトル')); 2foreach ($scf_posts as $scf_post) { 3 $scf_id = $scf_post->ID; 4} 5$scf_settings = get_post_meta($scf_id, 'smart-cf-setting', true); 6$scf_setting[] = maybe_unserialize($scf_settings[0]);

で、Smart Custom Fields の管理画面で設定した「カスタムフィールドのタイトル」の内容が、配列 $scf_setting に入ります。

$scf_setting['fields'] で、Smart Custom Fields で、設定した「フィールド」の内容が確認できます。

上記のスクリプトを実行すると $scf_setting['fields'][0] に1番目のカスタムフィールドの内容が、$scf_setting['fields'][1] に1番目のカスタムフィールドの内容が... と順に入ります。

例:
「カスタム1」というタイトルで、"チェックボックス1'"というフィールド名のチェックボックスを1つもつカスタムフィールドを作って、選択肢を「A, B, C, D」と定義したと仮定します。

上記のスクリプトの1行目を「カスタム1」にして実行してから、print_r($scf_setting['fields'][0]); とすれば、

array ( 'type' => 'check', 'name' => 'checkbox1', 'label' => 'チェックボックス1', 'choices' => 'A B C D', 'check_direction' => 'horizontal', 'default' => '', 'instruction' => '', 'notes' => '', )

と表示されます。

カスタムフィールドのチェックボックスの選択肢が必要なら $scf_setting['fields'][0]['choices'] で、選択肢が文字列で取り出せますので、文字列を分割してここの値に分けます。

投稿2018/05/17 23:37

編集2018/05/17 23:41
CHERRY

総合スコア25171

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

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

CHERRY

2018/05/17 23:54 編集

もう少し手直しして関数化して functions に定義しておくと、使い勝手も良くなって便利ですが、この辺は、質問者への宿題ということで... 答えは書かないでおきます。
8-0_nyan5

2018/05/18 01:45

横から失礼します。get_postsのパラメータにpost_titleって、使えるのですか?
退会済みユーザー

退会済みユーザー

2018/05/18 19:03

ありがとうございます。仕組みのご説明のおかげで、なんだかちょっと分かった気分です。 出力までさせる場合は次にように書くということ、では、ないのでしょうか?(できなかったので…) <?php $scf_posts = get_posts(array('post_type' => 'smart-custom-fields', 'post_title' =>'cf_sample')); foreach ($scf_posts as $scf_post) { $scf_id = $scf_post->ID; } $scf_settings = get_post_meta($scf_id, 'smart-cf-setting', true); $scf_setting['fields'] = maybe_unserialize($scf_settings[0]); ?> <!--と書いて下記のいずれかで出力する?--> <?php $scf_posts; ?> <?php echo $scf_setting['fields'][0]['choices']; ?>
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問