サポート » 使い方全般 » if文の分岐が権限によって違う反応になる

  • 解決済 d.w.c

    (@dwc-1)


    カスタム投稿タイプを含む複数の投稿タイプの投稿が対象で、hide-editorタームがついているものは編集画面でデフォルトの本文入力エリアを非表示にしたく、下記コードをfunctions.phpに書きました。

    function my_functional_restriction_support() {
     
      //管理画面のみ適用
      if( !is_admin() ) {
        return;
      }
     
      if( isset( $_GET["post"] )){
        //'hide-editor'タクソノミーがある場合はデフォルトのエディターを非表示
        if ( is_object_in_term( $_GET["post"], 'functional-restriction', 'hide-editor' ) == true ){
          $post_type = get_post_type( $_GET["post"] );
          remove_post_type_support( $post_type, 'editor' );
        }
      }
    
    }
    add_action( 'init' , 'my_functional_restriction_support' );

    管理者権限ではこれで望み通りに動くのですが、編集者権限の場合は
    if ( is_object_in_term( $_GET["post"], 'functional-restriction', 'hide-editor' ) == true )の部分が目的と逆の動きをします。
    例:
    if( is_object_in_term(***) == true )
    if( is_object_in_term(***) != false )
    上記2例の分岐条件の時、
    管理者の場合はis_object_in_term(***)がtrueの場合に適用
    編集者の場合はis_object_in_term(***)がfalseの場合に適用
    となってしまいます。

    これはなぜなんでしょうか・・・
    どのようにすればどの権限でも同じ反応を返すようにできますか?
    WordPress 4.9.8

1件の返信を表示中 - 1 - 1件目 (全1件中)
  • トピック投稿者 d.w.c

    (@dwc-1)

    権限で効果が反転する理由はわかりませんが、動作内容としては自己解決しました。

    if( is_object_in_term(***) == true )
    ではなく、
    if( is_object_in_term(***) === true )
    と書くことで目的の動きをするようになりました。

1件の返信を表示中 - 1 - 1件目 (全1件中)
  • トピック「if文の分岐が権限によって違う反応になる」には新たに返信することはできません。