前提・実現したいこと
javascriptのコード内でWordPressのカスタムフィールドを読み込みたいです。
プログラム自体は簡易的な掲示板で「bbs.pageid」で指定したログファイルを参照して表示するものです。
該当のソースコード
■561と直接記入すると正常に動作します。
<!-- ログを読み込む部分 --> <script type="text/javascript" charset="Shift_JIS"> bbs.pageid = '561' ; </script>■カスタムフィールドを取得して自動入力させようとすると失敗します。
プログラムの知識が無くて色々なサイトを参考にして真似してみたのですが、うまくいきません。
やろうとしていることは下のようなイメージです。(customfield01には561が入力されています)
×失敗
<script type="text/javascript" charset="Shift_JIS"> bbs.pageid = 'echo get_post_custom()['customfield01'][0];' ; </script>気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答2件
0
ベストアンサー
PHP
1function my_shortcode_ex2js_handler6($atts, $content=null) { 2 return '<script>bbs.pageid = "'.get_post_custom()['customfield01'][0].'";</script>'; 3} 4add_shortcode('sc_test6', 'my_shortcode_ex2js_handler6');
投稿2019/06/23 11:49
総合スコア69407
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答ありがとうございます。
コードは記事投稿のテキストエディターに入力しています。
×こちらのコードを試してみましたが、動作しませんでした。
<script type="text/javascript" charset="Shift_JIS">
bbs.pageid = '<?php echo get_post_custom()['customfield01'][0]; ?>' ;
</script>
また、googleで調べながらfunction.phpにショートコードを登録して実行してみた所、
数字を直接入力すると成功したのですが
function my_shortcode_ex2js_handler6($atts, $content=null) {
$str=<<<eot
<script type="text/javascript" charset="Shift_JIS">
bbs.pageid = '561';
</script>
eot;
return $str;
}
add_shortcode('sc_test6', 'my_shortcode_ex2js_handler6');
×下のように自動で入力させようとするとやはり失敗をしてしまいます。
function my_shortcode_ex2js_handler6($atts, $content=null) {
$str=<<<eot
<script type="text/javascript" charset="Shift_JIS">
bbs.pageid = '<?php echo get_post_custom()['customfield01'][0]; ?>';
</script>
eot;
return $str;
}
add_shortcode('sc_test6', 'my_shortcode_ex2js_handler6');
■こちらのショートコードを実行すると561と表示されるので、カスタムフィールドに問題はなさそうです。
function shortcode_test5(){echo get_post_custom()['customfield01'][0]; }
add_shortcode('sc_test5', 'shortcode_test5');
2019/06/23 04:43
「動作しない」「ダメだった」だけだと次のアドバイスができませんので、起きた現象をなるべく正確に教えてください。ブラウザ「ソースを表示」などで該当箇所がどうなってるかを確認したりした結果を追記するとか。
もし、
'<?php echo 516;?>';
のように書いてちゃんと516とhtmlソースに出力されているならget_post_custom()という関数が動いてないということにもなりますし(参照できないとか、WordPress配下にないとか、調べる必要はありますが)
2019/06/23 10:17
お返事ありがとうございます。
色々なコードを書いてソースを確認してみました。
わかりづらくて申し訳ないです。
■数字を直接入力した場合
<script type="text/javascript" charset="Shift_JIS">
bbs.pageid = '561' ;
</script>
↓
ソースでの表示(〇動作しました。ショートコードから稼働させた場合も同様でした。)
<script type="text/javascript" charset="Shift_JIS">
bbs.pageid = '561';
</script>
■自動で取得しようとした場合
<script type="text/javascript" charset="Shift_JIS">
bbs.pageid = '<?php echo get_post_custom()['customfield01'][0]; ?>' ;
</script>
ソースでの表示(×動作しませんでした)
<script type="text/javascript" charset="Shift_JIS">
bbs.pageid = '<?php echo get_post_custom()['customfield01'][0]; ?>' ;
</script>
■'<?php echo 561;?>';だけを書いた場合
画面上の表示
‘‘;
ソースでの表示
‘<?php echo 561;?>‘;
■bbs.pageid = '<?php echo 561;?>' ;と書いてみた場合
コード
<script type="text/javascript" charset="Shift_JIS">
bbs.pageid = '<?php echo 561;?>' ;
</script>
ソースでの表示(×動作しませんでした)
<script type="text/javascript" charset="Shift_JIS">
bbs.pageid = '<?php echo 561;?>' ;
</script>
■続いて、function.phpにコードを書いてショートコードから読み込んだ場合です
function.phpで'<?php echo 561;?>';を書くと「functions.php ファイルの●行目のエラーのため、PHP コードの変更をロールバックしました。修正し、もう一度保存してください。syntax error, unexpected '<'」と出るため、<?php ;?>は外しています。
function shortcode_test5(){ echo 561;}
add_shortcode('sc_test5', 'shortcode_test5');
画面上の表示
561
ソースでの表示
561
■function.phpに登録した下のコードをショートコードで読み込んだ場合
<script type="text/javascript" charset="Shift_JIS">
bbs.pageid = '561';
</script>
↓
〇ソースでの表示(正常に動作しました)
<script type="text/javascript" charset="Shift_JIS">
bbs.pageid = '561';
</script>
■function.phpに登録した下のコードをショートコードで読み込んだ場合
この場合は<?php ;?>で囲んでもエラーは出ません。
<script type="text/javascript" charset="Shift_JIS">
bbs.pageid = '<?php echo get_post_custom()['customfield01'][0]; ?>';
</script>
↓
×ソースでの表示(動作しませんでした)
<script type="text/javascript" charset="Shift_JIS">
bbs.pageid = '<?php echo get_post_custom()['customfield01'][0]; ?>';
</script>
■<?php ;?>を抜いた場合
<script type="text/javascript" charset="Shift_JIS">
bbs.pageid = 'echo get_post_custom()['customfield01'][0];';
</script>
↓
×ソースでの表示(動作しませんでした)
<script type="text/javascript" charset="Shift_JIS">
bbs.pageid = 'echo get_post_custom()['customfield01'][0];';
</script>
■function.phpに登録した下のコードをショートコードで読み込んだ場合
function shortcode_test5(){echo get_post_custom()['customfield01'][0]; }
add_shortcode('sc_test5', 'shortcode_test5');
画面上の表示:561
ソースでの表示:561
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/06/25 07:25