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

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

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

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

PHP

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

プラグイン

プラグイン(plug-in)は、ソフトウェアアプリケーションの機能拡張の為に開発された、一組のソフトウェアコンポーネントのことを指します。

Q&A

解決済

1回答

5896閲覧

WordPressのカスタムフィールドでショートコードを呼び出すためには?

退会済みユーザー

退会済みユーザー

総合スコア0

WordPress

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

PHP

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

プラグイン

プラグイン(plug-in)は、ソフトウェアアプリケーションの機能拡張の為に開発された、一組のソフトウェアコンポーネントのことを指します。

1グッド

1クリップ

投稿2016/07/03 06:52

編集2016/07/08 09:51

「Smart Custom Fields」というプラグインを使っています。

シンプルで分かりやすいプラグインなのですが、
どうしてもショートコードを呼び出せません。

繰り返すときに、最初のフィールドの値しか
繰り返してくれなかったりするんです。(´;ω;`)

ちなみにポイントは4つあります。
①フィールドを繰り返して使う。
②1つのフィールドに複数のショートコードを入れる。
③ショートコード以外を書くこともある。
④ulとliでくくるもの(cf_shortcode2~3)と、普通に使うもの(cf_shortcode1)がある。

というわけで、いちおう下記に2つ

<!-- オシイ(´;ω;`) -->

という感じのものを書いておきますので、
僭越ながらヒントにしていただければ幸いでございます。

PHP

1<!-- 最初の値しか繰り返してくれない(´;ω;`) --> 2 3<?php 4$group_set = SCF::get( 'repeat-group' ); 5foreach ( $group_set as $field_name => $field_value ) { 6?> 7<?php echo apply_filters('the_content', get_post_meta($post->ID, 'cf_shortcode1', true)); ?> 8<ul class="classdayo"> 9<li> 10<?php echo apply_filters('the_content', get_post_meta($post->ID, 'cf_shortcode2', true)); ?> 11</li> 12<li> 13<?php echo apply_filters('the_content', get_post_meta($post->ID, 'cf_shortcode3', true)); ?> 14<?php echo apply_filters('the_content', get_post_meta($post->ID, 'cf_shortcode4', true)); ?> 15</li> 16</ul> 17<?php } ?> 18 19

PHP

1<!-- 各値を繰り返すが、ショートコードを複数使用できない(´;ω;`) --> 2 3<?php 4$repeat_group = SCF::get( 'repeat-group' ); 5foreach ( $repeat_group as $fields ) { 6?> 7<?php echo do_shortcode($fields['cf_shortcode1']);?> 8<ul class="classdayo"> 9<li> 10<?php echo do_shortcode($fields['cf_shortcode2']);?> 11</li> 12<li> 13<?php echo do_shortcode($fields['cf_shortcode3']);?> 14<?php echo do_shortcode($fields['cf_shortcode4']);?> 15</li> 16</ul> 17<?php } ?> 18

今回のプラグインだけで使われるらしい
「SCF::getという関数」があったりと、
少し分かりにくいかと思いますが、
どなたかもしお詳しい方がいらっしゃいましたら
ご教示いただければ幸いです。
よろしくお願いいたします。


追記します。
WordPressのデバックモードで表示されたエラーです。
尚、10回読み込むと10回とも表示メッセージが違ってちょっと意味不明すぎたので、それぞれ1つずるだけにしました。
いずれの場合も冒頭にデータベースエラーとあるのですが、コードはあっているのでしょうか?
というか、同じこと書いているのに、読み込みのたびにエラー表示が違うのはなんでなのでしょうか?それってふつうなのですか?

■■■■
■質問文にある
■( 最初の値しか繰り返してくれないバージョン)
■のときのデバックモードの表示エラー
■■■■
WordPress データベースエラー: [Error on rename of '.\wordpress_dev_test#sql-1fd4_43.frm' to '.\wordpress_dev_test\srm_users.frm' (Errcode: 13 - Permission denied)]
ALTER TABLE srm_users CHANGE COLUMN email email VARCHAR(255)

■■■■
■最初のご回答でご教示いただいた方法
■foreach ( $group_set as $field_name => $field_value ) {
■のときのデバックモードの表示エラー
■■■■
WordPress データベースエラー: [Error on rename of '.\wordpress_dev_test#sql-1fd4_41.frm' to '.\wordpress_dev_test\srm_container.frm' (Errcode: 13 - Permission denied)]
ALTER TABLE srm_container CHANGE COLUMN anonymous anonymous BOOLEAN

■■■■
■2回目のご回答でご教示いただいた方法
■foreach ( $repeat_group as $fields ) {
■のときのデバックモードの表示エラー
■■■■
WordPress データベースエラー: [Error on rename of '.\wordpress_dev_test#sql-1fd4_3e.frm' to '.\wordpress_dev_test\srm_reviews.frm' (Errcode: 13 - Permission denied)]
ALTER TABLE srm_reviews CHANGE COLUMN created created TIMESTAMP DEFAULT CURRENT_TIMESTAMP

mondaminZ👍を押しています

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

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

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

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

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

guest

回答1

0

ベストアンサー

もう解決されているかもしれませんが、下記のようにしてみてはいかがでしょうか。

PHP

1$group_set = SCF::get( 'repeat-group' ); 2foreach ( $group_set as $fields ) { 3 $cf_shortcode1 = apply_filters( 'the_content', $fields[ 'cf_shortcode1' ] ); 4 $cf_shortcode2 = apply_filters( 'the_content', $fields[ 'cf_shortcode2' ] ); 5 $cf_shortcode3 = apply_filters( 'the_content', $fields[ 'cf_shortcode3' ] ); 6 $cf_shortcode4 = apply_filters( 'the_content', $fields[ 'cf_shortcode4' ] ); 7 echo $cf_shortcode1; ?> 8<ul class="classdayo"> 9 <li><?php echo $cf_shortcode2; ?></li> 10 <li> 11 <?php 12 echo $cf_shortcode3; 13 echo $cf_shortcode4; 14 ?> 15 </li> 16</ul> 17<?php }

投稿2016/07/07 18:25

編集2016/07/08 10:38
kei344

総合スコア69398

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

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

退会済みユーザー

退会済みユーザー

2016/07/08 03:50

いえいえ。結局あきらめてなげておりましたので、ご回答はとっってもうれしいです。 ありがとうございます。 ただ、仰るように書いてみたのですが、なにも映らなくなってしまいました。 HTMLの当該部分はこうなってしまった模様でして。。 いったいなにが起きたかお分かりになりますでしょうか? <!-- カスタムフィールド呼び出し --> <ul class="classdayo"> <li> </li> <li> </li> </ul> <ul class="classdayo"> <li> </li> <li> </li> </ul> <ul class="classdayo"> <li> </li> <li> </li> </ul> <ul class="classdayo"> <li> </li> <li> </li> </ul> <ul class="matome2"> <li> </li> <li> </li> </ul>
kei344

2016/07/08 04:36

できればコメント欄で長いコードを書かないでもらえるとありがたいです。そういう場合は質問文に追記することで、他の方にもみやすいものになると思います。 「真っ白になってしまう」場合、WordPressのデバックモードで確認してください。⇒ http://mignonstyle.com/debug-mode/ foreach ( $group_set as $field_name => $field_value ) { ↓ foreach ( $repeat_group as $fields ) { ですね、書き間違えていたので回答を編集します。
退会済みユーザー

退会済みユーザー

2016/07/08 05:56

ごめんなさい。せめて後世のために見やすくはしておきたいものですな。(・。・; 真っ白というか、カスタムフィールド部分だけ非表示でした。他は表示されています。まぁそれはともかく、デバックモード、便利そうですね!試したみたところ、元の方もご編集いただいた方も、エラーでした。泣 質問文に追記しておきましたので、またお手すきのおりにでもご返信いただけますと幸いです。m(__)m
kei344

2016/07/08 09:02

> 質問文に追記しておきましたので、 こちらの環境では追記が確認できませんが、とりあえず「foreach ( $repeat_group as $fields ) {」に変えるのはされましたか?
退会済みユーザー

退会済みユーザー

2016/07/08 09:56

失礼いたしました。こんどこそ追記しました。 2回目の方法もためしてみたのですが、カスタムフィールドが表示されるべき部分にエラーがでてしまいました。42行目が違うよ。とのエラーなので、2回目に変えた部分が違っちゃったのかな、と(>_<) Warning: Invalid argument supplied for foreach() in C:\Users\kamesan\Dropbox\InstantWP_4.5\iwpserver\htdocs\dev_test\wp-content\themes\amigo-child\content-single-custom.php on line 42
kei344

2016/07/08 10:37

「foreach ( $group_set as $fields ) {」の間違いでした、何度もすみませんが、試してみてください。
退会済みユーザー

退会済みユーザー

2016/07/08 11:58

こちらこそ、何度も聞いてしまってごめんなさい。 そして、なんと!できました!やっと、やっと、、感無量でございます。。 どうもありがとうございます。m(__)m
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問