サポート » プラグイン » Advanced Custom Fieldsのget_field()関数について

  • 解決済 Sakurai89

    (@sakurai89)


    現在、Advanced Custom Fieldsプラグインを使用してのカスタムフィールド設置と取得を行っております。メディア(画像)に『data-type』というカスタムフィールドを設定し、テーマのfunction.phpを介して、下記『my_image_send_to_editor』関数をかませ、該当メディアのカスタムフィールドを、メディアが出力される固定ページ側に組み込みたいと思っていますが、下記ソースではget_field関数が動いている気配がおらず、途方にくれております。

    function my_image_send_to_editor( $html, $id, $caption, $title, $align, $url, $size, $attach_datatype, $post_id ) {
    
    	$attach_datatype = get_field("data-type",$post_id);
    
    	$html = preg_replace('/<a href=".+">/', '', $html);
    	$html = preg_replace('/<\/a>/', '', $html);
    	$html = '<div class="picture-item" data-types=\'["' .$attach_datatype . '"]\' >' .$html .'</div>';
    
    	return $html;
    
    }
    
    add_action( 'image_send_to_editor', 'my_image_send_to_editor', 10 ,7);

    この場合、メディアの各画像につけた『data-type』フィールドを出力させるにはどうしたらよいのでしょうか。お忙しいところ大変恐縮ですが、ご教授いただけますようお願い致します。

    参考にしたサイト
    http://www.mao-engineer.jp/blog/wordpress/1288

    Advanced Custom Fieldsの関数の全部の使い方を調べてみた

5件の返信を表示中 - 1 - 5件目 (全5件中)
  • 水野史土

    (@ounziw)

    ● data-typeのスペルがあっているか
    ● $post_idにidが入っているか
    ● get_field(“data-type”,$post_id) の戻り値は文字列なのかどうか

    あたりを確認してもらえますか。

    ikaring

    (@ikaring)

    未検証ですが、次のようにしたらどうでしょうか。
    my_image_send_to_editorの引数、get_fieldの第2引数を$post_idでなく$id、add_actionの第4引数の数、あとdata-typesのマークアップ部分を変更しています。

    function my_image_send_to_editor( $html, $id, $caption, $title, $align, $url, $size, $alt ) {
    
    	$attach_datatype = get_field("data-type",$id);
    
    	$html = preg_replace('/<a href=".+">/', '', $html);
    	$html = preg_replace('/<\/a>/', '', $html);
    	$html = '<div class="picture-item" data-types="' .$attach_datatype . '" >' .$html .'</div>';
    
    	return $html;
    
    }
    
    add_action( 'image_send_to_editor', 'my_image_send_to_editor', 10 ,8);
    トピック投稿者 Sakurai89

    (@sakurai89)

    Fumito MIZUNOさん ikaringさん

    ご返事、ご教授ありがとうございます!
    ikaringさんのほとんどコピペになってしまいますが、
    下記コードで無事に実装できました。
    本当にとても助かりました、ありがとうございます!

    function my_image_send_to_editor( $html, $id, $caption, $title, $align, $url, $size, $alt ) {
    
    	$attach_datatype = get_field("data-type",$id);
    
    	$html = preg_replace('/<a href=".+">/', '', $html);
    	$html = preg_replace('/<\/a>/', '', $html);
    	$html = '<div class="col-xs-6 col-sm-6 col-md-3 col-lg-2 picture-item" data-types=\'["' .$attach_datatype . '"]\'>' .$html .'</div>';
    
    	return $html;
    
    }
    
    add_action( 'image_send_to_editor', 'my_image_send_to_editor', 10 ,8);
    </a>

    まだまだWordpressもプラグイン周りも勉強中のために、ずうずうしいお願いとは思いますが、可能であれば後学のために、上記修正していただいた部分(または元ソースの間違い部分)についてご教授頂けたりしないでしょうか。

    ikaring

    (@ikaring)

    無事実装できたとのことで良かったです。

    image_send_to_editorフックのReferenceを見ていただくとだいたい分かっていただけるんじゃないかと思います。
    View on Tracのリンクからソースコードも確認いただけますので、ご参照ください。

    関数のことなどCodexを見ていただくと勉強になると思います。
    私もまだまだ全然わからないことだらけで、いつも参照しています。

    http://wpdocs.osdn.jp/関数リファレンス/add_action

    トピック投稿者 Sakurai89

    (@sakurai89)

    ご教授ありがとうございます!

    上記、参照していただいたページを確認し、

    ・add_action関数の引数の数があっていなかった事(image_send_to_editorで設定している引数は10個なのに、add_action側が7つになってたんですね。。。初歩的なミス、大変失礼しました。)

    ・$post_idと$idの違い(私が呼ぼうとしていた$post_idは”投稿”時に付与されるidで、今回のような”メディアアップロード”によって付与されるidということなのかなと、image_send_to_editorのリファレンスを読んでざっくりと解釈しております。)

    が問題だったことを理解しました。
    解決済みとさせていただきます!ありがとうございました。

5件の返信を表示中 - 1 - 5件目 (全5件中)
  • トピック「Advanced Custom Fieldsのget_field()関数について」には新たに返信することはできません。