• 赤色のリンクは、まだ日本語Codexに存在しないページ・画像です。英語版と併せてご覧ください。(詳細

このWikiはいつでも誰でも編集できます

「プラグイン API/アクションフック一覧/quick edit custom box」の版間の差分

提供: WordPress Codex 日本語版
移動先: 案内検索
(データの保存)
(データの保存)
65行目: 65行目:
  
 
==データの保存==
 
==データの保存==
カスタム入力に入力されたデータは、[save_post](http://wpdocs.osdn.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/save_post) アクションをフックして保存することができます。
+
カスタム入力に入力されたデータは、[[save_post]] アクションをフックして保存することができます。
  
 
<pre>
 
<pre>

2017年2月16日 (木) 02:11時点における版

説明

quick_edit_custom_box は、クイック編集時にプラグインが、カスタム列用の入力項目を出力するアクションです。 この操作は、各カスタム列に対して1度呼ばれます。

カスタム列は manage_edit-${post_type}_columns フィルタで追加されます。 カスタム入力からデータを保存するには、save_post アクションをフックします。

使い方

<?php add_action( 'quick_edit_custom_box', 'function_name' ); ?>

"function_name" は呼び出される関数名です。

パラメータ

登録されたアクション関数には、以下のパラメータが渡されます。

$column_name
文字列) (必須) 編集する列の名前
初期値: なし
$post_type
文字列) (必須) 投稿タイプ
初期値: なし

アクション関数は、ポストIDもカラムの既存値も渡されないことに注意してください。

入力の作成

add_action( 'quick_edit_custom_box', 'display_custom_quickedit_book', 10, 2 );

function display_custom_quickedit_book( $column_name, $post_type ) {
    static $printNonce = TRUE;
    if ( $printNonce ) {
        $printNonce = FALSE;
        wp_nonce_field( plugin_basename( __FILE__ ), 'book_edit_nonce' );
    }

    ?>
    <fieldset class="inline-edit-col-right inline-edit-book">
      <div class="inline-edit-col column-<?php echo $column_name; ?>">
        <label class="inline-edit-group">
        <?php 
         switch ( $column_name ) {
         case 'book_author':
             ?><span class="title">Author</span><input name="book_author" /><?php
             break;
         case 'inprint':
             ?><span class="title">In Print</span><input name="inprint" type="checkbox" /><?php
             break;
         }
        ?>
        </label>
      </div>
    </fieldset>
    <?php
}

データの保存

カスタム入力に入力されたデータは、save_post アクションをフックして保存することができます。

add_action( 'save_post', 'save_book_meta' );

function save_book_meta( $post_id ) {
    /* in production code, $slug should be set only once in the plugin,
       preferably as a class property, rather than in each function that needs it.
     */
    $slug = 'book';
    if ( $slug !== $_POST['post_type'] ) {
        return;
    }
    if ( !current_user_can( 'edit_post', $post_id ) ) {
        return;
    }
    $_POST += array("{$slug}_edit_nonce" => '');
    if ( !wp_verify_nonce( $_POST["{$slug}_edit_nonce"],
                           plugin_basename( __FILE__ ) ) )
    {
        return;
    }

    if ( isset( $_REQUEST['book_author'] ) ) {
        update_post_meta( $post_id, 'author', $_REQUEST['book_author'] );
    }
    # checkboxes are submitted if checked, absent if not
    if ( isset( $_REQUEST['inprint'] ) ) {
        update_post_meta($post_id, 'inprint', TRUE);
    } else {
        update_post_meta($post_id, 'inprint', FALSE);
    }
}