web-dev-qa-db-ja.com

save_postフックのget_terms

通常、公開しようとしている投稿の属性を確認したい場合は、次のように確認します。

$post_title = $_POST['post_title'];

post_titleは、編集ウィンドウのタイトルフィールドの名前です。

私は私が同じ論理を分類学メタボックスに適用すると思いました。

$formats = $_POST['tax_input[formats][]'];

基本的に、投稿を公開するときに特定の分類用語が選択されているかどうかを確認します。

2
AlxVallejo

あなたは正しい方向に進んでいます。

あなたがフォームの中でこのようなことをすると..

<input name="tax_input[formats][]" />

$_POST配列にレベルを作成します。

だから、あなたはこのようなフォーマットの配列を得るでしょう...

<?php
$formats = $_POST['tax_input']['formats'];

完全な例.

<?php
add_action('save_post', 'wpse74017_save');
function wpse74017_save($post_id)
{
    // check nonces and capabilities here.

    // use a ternary statement to make sure the input is actually set
    // remember that `save_post` fires on every post save (any post type).
    $formats = isset($_POST['tax_input']['formats']) ? $_POST['tax_input']['formats'] : array();

     // do stuff with $formats
}
0
chrisguitarguy
$formats = $_POST['tax_input[formats][]'];

???????

var_dump( $_POST );は役に立つかもしれません

'tax_input' => 
    array (size=1)
      'post_tag' => string 'tag_a,tag_b,tag_c' (length=...)

これを試して:

add_action( 'save_post', 'find_post_tax' );

function find_post_tax(){

  $tax_to_fetch = 'supersonicscrewdriver';
  $found = false;

  if( isset( $_POST['tax_input']['formats'] ) && ! empty( $_POST['tax_input']['formats'] ) ){
    $taxs = explode( ',', $_POST['tax_input']['formats'] );
    $found = in_array( $tax_to_fetch, $taxs );
  }

  return $found;

}
1
Ralf912