サポート » 使い方全般 » カスタムフィールドを割り算しその値を新しいカスタムフィールドに代入

  • 解決済 komatterwww

    (@komatterwww)


    Advanced Custom Fieldプラグインの有料プラグイン「Repeater Field」を使い、
    「parent」という親フィールドの中に、
    「child_01」「child_02」「child_03」という3つのサブフィールドを作りました。
    この際、child_01のフィールドタイプはセレクトとし
    1,2,3,4,5,6,7,8,9,10を選択できます。

    例1
    1つ目「6」を選択
    2つ目「10」を選択
    この場合2つの平均は「8」となります。

    例2
    1つ目「1」を選択
    2つ目「2」を選択
    3つ目「3」を選択
    この場合2つの平均は「2」となります。

    トップやカテゴリーページの一覧の部分で投稿を並び替える際に
    この「2」や「8」という数字を「average」という新しいカスタムフィールドに代入して下記のように書けば並び替わると思いますが、
    <?php query_posts( ‘post_type=post&showposts=10&orderby=meta_value_num&meta_key=average&order=DESC’ ); ?>

    (6+10)/2=新しいカスタムフィールド
    (1+2+3)/3=新しいカスタムフィールド
    のような新しいカスタムフィールドを作るまでのphpはどのように書けばよいでしょうか。

    ※/2や/3となっていますとおり、ここの数字が100になる場合もあり固定ではありません。足した数分だけ割ります。

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • 1つはpublish_postというフックを使う方法があります。
    adavnced custom fieldsのrepeaterでは値がシリアライズされて渡されたと思ったので
    デシリアライズした上で必要な部分を抜き出して計算し
    averageに入れてやるという形になります。
    (ただ、フックする順番に気をつけないとDBに書き込んでから
     動いてしまうってことになったようなならなかったような・・・
     すみません、よく覚えていません)

    もう一つは管理画面で入力した端からjavascriptで計算させる方法があります。
    こちらもrepeaterでは動的に行が増えるので
    keyupイベントだったりselectedイベントだったりを
    liveかonで取得するようにしてやれば計算できると思います。
    (wordpressのjQueryのバージョンではliveが使えますがonを使用したほうがいいです)

    どちらにしても少々ハードルの高い作業になるかと思います。

    Tsuyoshi.

    (@andante0727)

    トピック投稿者 komatterwww

    (@komatterwww)

    jdbbさん
    Tsuyoshi.さん
    ありがとうございます。

    publish_postというアクションフックというものにヒントを得て色々試行錯誤してやっと理想とする挙動を実現する事が出来ました!
    本当にありがとうございました。

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • トピック「カスタムフィールドを割り算しその値を新しいカスタムフィールドに代入」には新たに返信することはできません。