サポート » 使い方全般 » アクションフックの使い方について

  • 解決済 yukiyuki

    (@yukiyuki)


    アクションフックの使い方について教えてください。

    現在、functions.phpに”カスタム投稿”に関する複数の処理を記載して、ページが表示される時に実行されるようにしています。

    ・service
    ・product
    ・company

    上記のようなカスタム投稿が3つほどあり、それぞれの投稿を編集する時や、表示する時に、それぞれのカスタム投稿に特化した処理を実行させたいと思い、add_actionで”init”と指定したのですが、3種類のうちfunctions.phpで一番下に書いたものだけが常に反映されてしまいます。
    3種類の処理は内容は同じなのですが、カスタム投稿の名前が入る部分(上記でいうところのserviceなどです)が、それぞれに異なっています。

    正直なところ、アクションやフックについての考え方がよくわからないので、的外れなことをきいてしまうのかもしれませんが、特定のカスタム投稿の編集画面だった場合に、や、特定のカスタム投稿を表示する際にアクションを追加するにはどのようにしたら良いのでしょうか?
    また、そもそもの考え方が間違えている場合はご指摘いただけると嬉しいです。

    よろしくお願いします。

6件の返信を表示中 - 1 - 6件目 (全6件中)
  • add_actionで”init”と指定したのですが、3種類のうちfunctions.phpで一番下に書いたものだけが常に反映されてしまいます。

    具体的なコードを掲示していただいた方が早いかもしれませんね。

    そうすれば、例えば

    add_action('init', 'my_function_1');
    add_action('init', 'my_function_2');
    add_action('init', 'my_function_3');

    のようなコードであれば、
    if('wper' == $_POST['post_type'])
    のような、投稿タイプによる条件分岐が必要かも、という感じのアドバイスがくるかもしれません。

    トピック投稿者 yukiyuki

    (@yukiyuki)

    kurosquareさんありがとうございます。

    考え方の方向がやっとわかってきた気がします。
    つまり、管理画面上での条件分岐の方法がわかれば良いのかと。

    例えば、「カスタム投稿(services)の記事を編集する画面の場合に」というようなことを実現するにはどうしたら良いのでしょうか?

    例えば、WordPressの表の部分ではis_categoryやis_page,is_singleなどのテンプレートタグを使ったりして分岐をさせることができるわけですが、管理画面内でそういったことをやりたいのですが、どのようにしたら良いのでしょうか?

    今回は管理画面でカスタム投稿の種類によって編集画面を分岐させたいのですが、$_POST[‘post_type’]のようなかたちで管理画面では送られているということでしょうか?

    試しにfunctions.phpにecho $_POST[‘post_type’]と書いてみたのですが、管理画面上に表示されませんでした。

    管理画面内での条件分岐の方法について教えてください。
    よろしくお願いします。

    記事の編集画面は wp-admin/edit-form-advanced.php で出力してますので
    ソース中の dp_action() からお好みのタイミングのものを利用すれば OK です◎

    投稿タイプ名は $post_type、
    投稿タイプのオブジェクトは $post_type_object
    という変数に各々入ってます。

    それぞれのカスタム投稿に特化した処理

    が具体的に何なのかをご説明いただくと、より的確なアドバイスができるもしれません。

    トピック投稿者 yukiyuki

    (@yukiyuki)

    kzさんありがとうございます。

    タイトル入力欄とビジュアルエディタの間に、それぞれのカスタム投稿の「入力の際の注意事項」のようなものを出力したいと思っています。

    functions.phpにて$post_type、$post_type_objectをエコーしてみたのですが、管理画面上には何も表示されないのですが、これはfunctions.phpが実行されるタイミングの問題なのでしょうか?

    1.テーマの functions.php に以下を追加。

    <?php
    add_action('admin_print_scripts', 'my_admin_print_scripts');
    function my_admin_print_scripts() {
      wp_enqueue_script( 'my-admin-script', get_bloginfo('stylesheet_directory') . '/admin-script.js', array( 'jquery' ), false, true );
    }
    ?>

    2.admin-script.js を作成。以下をコピペしてテーマフォルダにアップロード。

    jQuery( document ).ready( function( $ ) {
      if ( typenow ) {
        var text = 'この編集ページの投稿タイプは ' + typenow + ' ですー';
        jQuery( '#titlewrap' ).after( '<p>' + text + '</p>' );
      }
    });

    javascript の変数 typenow に現在の投稿タイプスラッグ名が入ってます。
    if 文で分岐させて投稿タイプごとの入力の際の注意事項のようなものを
    text に入れれば OK。

    トピック投稿者 yukiyuki

    (@yukiyuki)

    返答が遅くなり申し訳ありませんでした。

    無事に解決することができました。
    いつもありがとうございます^^

6件の返信を表示中 - 1 - 6件目 (全6件中)
  • トピック「アクションフックの使い方について」には新たに返信することはできません。