サポート » 使い方全般 » カスタムフィールド値から計算して格納

  • http://tenman.info/labo/snip/archives/7638

    こちらのサイトを参考にさせていただき、year,month,dateというカスタムフィールドから年齢を計算し、
    その結果をageというカスタムフィールドに格納すると言うものを実現したいのですが、上記サイトと同じようにfunctions.php、single.phpにそれぞれ入力しても表示されません。
    なにが原因なのでしょうか?
    勉強不足で申し訳ございませんが、お力お貸しいただければ幸いです。
    よろしくお願いいたします。

6件の返信を表示中 - 1 - 6件目 (全6件中)
  • こんにちは、

    その記事を書いた本人です。

    一応、やってみたんですが、動作はしているようでした

    sample

    で、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) );?>
    
    • この返信は3 ヶ月、 3 週間前に  nobita さんが編集しました。

    ご回答ありがとうございます。
    よろしくお願いいたします。

    カスタムフィールドプラグインの「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です
    気になるようでしたら、コードを変更してください。

    • この返信は3 ヶ月、 3 週間前に  nobita さんが編集しました。
    • この返信は3 ヶ月、 3 週間前に  nobita さんが編集しました。
    • この返信は3 ヶ月、 3 週間前に  nobita さんが編集しました。

    ご返信ありがとうございます。

    <?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) );?>
    で問題なく年齢が表示されるようになりました!

    昨夜はこのコードで表示されなかったのは事実なのですが、もしかしたらどこか私の入力などが間違っていたのかもしれません。

    現在は問題なく表示されているのですが、正確にどこを間違えていたなどがまだわかってないので
    自分なりに調べてみたいと思います。

    最後までお付き合い頂きありがとうございました!
    大変勉強になりました。

6件の返信を表示中 - 1 - 6件目 (全6件中)
  • このトピックに返信するにはログインが必要です。