こんにちは、
その記事を書いた本人です。
一応、やってみたんですが、動作はしているようでした
で、27が返ってきました。
PHPのコードなので、実際に書くときには<?php ... ?>
で囲む必要がありますが、それは行っていますか?
functions.php
<?php
add_shortcode( 'age' , 'nobita_age' );
function nobita_age() {
global $post;
$now = date( "Ymd" );
$year = sprintf( '%04d', get_post_meta($post->ID,'year',true ) );
$month = sprintf( '%02d', get_post_meta($post->ID,'month',true ) );
$date = sprintf( '%02d', get_post_meta($post->ID,'date',true ) );
if( ! checkdate($month,$date,$year) ) {
return 'invalid date';
}
$birth = (int) $year . $month . $date;
return floor( ($now - $birth) / 10000 );
}
?>
single.php
<?php echo do_shortcode( get_post_meta($post->ID, 'age', true) );?>
ご回答ありがとうございます。
よろしくお願いいたします。
カスタムフィールドプラグインの「Advanced Custom Fields」をしようして、year,month,dayを入力しているのですが、それが原因なのでしょうか?
また、他のカスタムフィールドの値をsingle.phpで表示する時は、
<?php the_field(‘hoge’,$post->ID); ?>
の様に表示させているのですが、ageも同じように
<?php the_field(‘age’,$post->ID); ?>
の様に表示できるのでしょうか?
非常に無知なもので申し訳ございませんが、よろしくお願いいたします。
Advanced Custom Fieldsを使った事がないので、何とも言えません
<?php the_field('age',$post->ID); ?>
と書いた時に、[age]
と表示される場合は、
アテズッポですが、get_field('age',$post->ID)
値がリターンするなら
<?php echo do_shortcode( get_field('age',$post->ID) );?>
ショートコードを実行する処理が必要になるんじゃないかと思います。
year,month,dayを入力しているのですが
書き方が悪かったかもしれませんが、dayではなくて、dateです
気になるようでしたら、コードを変更してください。
ご返信ありがとうございます。
<?php echo do_shortcode( get_post_meta($post->ID, 'age', true) );?>
または、
<?php the_field('age',$post->ID); ?>
と書いた場合でも、[age]
も表示されません。
functions.php
add_shortcode( 'age' , 'nobita_age' );
function nobita_age() {
global $post;
$now = date( "Ymd" );
$year = sprintf( '%04d', get_post_meta($post->ID,'year',true ) );
$month = sprintf( '%02d', get_post_meta($post->ID,'month',true ) );
$date = sprintf( '%02d', get_post_meta($post->ID,'day',true ) );
if( ! checkdate($month,$date,$year) ) {
return 'invalid date';
}
$birth = (int) $year . $month . $date;
return floor( ($now - $birth) / 10000 );
}
そもそもの設定か何かがまちがっているのでしょうか?
何度も大変申し訳ございませんが、ご回答いただければ幸いです。
よろしくお願いいたします。
<?php the_field('age',$post->ID); ?>
と書いた場合でも、[age]も表示されません。
Advanced Custom Fieldsを使った事がないので、何とも言えません
<?php the_field('他のフィールド',$post->ID); ?>
カスタムフィールド用のプラグインを使っているぐらいなら、他のフィールドでも同様の事をされていると思いますが、それらは正常に表示できているという事ですか?
デバッグモードで、エラーが出ていないか確認してみてください
http://mignonstyle.com/debug-mode/
ご回答ありがとうございます。
現在、教えていただいたデバッグモードなどを試しながらもう一度試してみた所
何故か問題なく
<?php the_field('age',$post->ID); ?>
で[age]
が表示されるようになり、
<?php echo do_shortcode( get_post_meta($post->ID, 'age', true) );?>
で問題なく年齢が表示されるようになりました!
昨夜はこのコードで表示されなかったのは事実なのですが、もしかしたらどこか私の入力などが間違っていたのかもしれません。
現在は問題なく表示されているのですが、正確にどこを間違えていたなどがまだわかってないので
自分なりに調べてみたいと思います。
最後までお付き合い頂きありがとうございました!
大変勉強になりました。