ご質問させてください。
wordpressで指定したポストIDの記事を表示するショートコードを作りたいです。
その際に複数のポストIDを引数として渡したいのですがどの様に書けばよいでしょうか?
よろしくお願いいたします。
追記:そもそも書き方がわかりませんので質問しました。
PHPで文字列を分離する様なやり方では実装できてます。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答2件
0
ベストアンサー
post_idを指定して渡したり、カテゴリを指定して渡したりという使い方が普通にあるだろうという想定として、ショートコードの書き方で配列をわたせるのではないか?
という疑問でした。
できないということでしょうか?
ショートコードの引数は下記 shortcode_parse_atts() で処理されているので、下記のような書き方で配列を渡すことが出来そうです。
当然複雑な配列はJSONにしてパースするなど、現在採られているであろう方法をお使いください。
[my_view_test 1 2 3]
(参考)
【shortcode_parse_atts() | Function | WordPress Developer Resources】
https://developer.wordpress.org/reference/functions/shortcode_parse_atts/
// (略)
foreach ($match as $m) {
if (!empty($m[1]))
$atts[strtolower($m[1])] = stripcslashes($m[2]);
elseif (!empty($m[3]))
$atts[strtolower($m[3])] = stripcslashes($m[4]);
elseif (!empty($m[5]))
$atts[strtolower($m[5])] = stripcslashes($m[6]);
elseif (isset($m[7]) && strlen($m[7]))
$atts[] = stripcslashes($m[7]);
elseif (isset($m[8]))
$atts[] = stripcslashes($m[8]);
}
// (略)
【get_shortcode_atts_regex() | Function | WordPress Developer Resources】
https://developer.wordpress.org/reference/functions/get_shortcode_atts_regex/
return '/([\w-]+)\s*=\s*"([^"])"(?:\s|$)|([\w-]+)\s=\s*'([^'])'(?:\s|$)|([\w-]+)\s=\s*([^\s'"]+)(?:\s|$)|"([^"]*)"(?:\s|$)|(\S+)(?:\s|$)/';
パース処理をして配列に入れるという方法で現在実装しています。
修正依頼させてもらった理由は、質問者が「 add_shortcode の実装方法自体がわからない」可能性があったためです。その場合「まるなげ」と指摘されかねないため、コードを書かれた方が良いとコメントしました。
投稿2016/04/12 05:26
総合スコア69364
0
ショートコードのパラメータについては、「https://wpdocs.osdn.jp/関数リファレンス/add_shortcode」に書かれていますので、読んでみてください。
ちょっと追加。
PHP
1function view_test( $prm ) { 2 // 中身は省略 3} 4add_shortcode( 'my_view_test', 'view_test' );
のような ショートコードを定義した場合:
[my_view_test pid="1,2,3,4"]
のように、ショートコードを呼び出すとファンクションでは、$prm['pid'] で、"1,2,3,4" が、参照できます。
[my_view_test pid1="1" pid2="2"]
の様に呼び出した場合は、$prm['pid1'], $prm['pid2'] で、それぞれの値が参照できます。
どちらでも お好きな方法で、利用してください。
投稿2016/04/09 12:03
編集2016/04/09 12:07総合スコア25171
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/04/09 12:39
2016/04/09 13:57
2016/04/12 03:06
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。