web-dev-qa-db-ja.com

URLパラメータをチェックせずに、特定の投稿リストにのみフィルタを適用する

私のプラグインクラスで:sliderという名前のカスタム投稿タイプを作成しました。アクションからビューリンクを解除するメソッドremove_row_actionを呼び出すフィルタを追加しています

   add_filter('post_row_actions', array(&$this, 'remove_row_actions'), 10, 1);

   public function remove_row_actions($action) {

    if (isset($_GET['post_type'])  && $_GET['post_type'] == 'slider')) {
        unset($action['view']);
        return $action;
    }else{
        return $action;
    }
}

これは完全にうまく機能しますが、GET変数でチェックするのではなく、add_filterがカスタム投稿タイプにのみ適用される、より明確な方法があるはずです。

1
meWantToLearn

はい、あなたが正しい。賢い方法があります。 post_row_actionsフィルタは、post_typeから取得できる2番目のパラメータ$ postも受け入れることができます。コードを見てください。

add_filter( 'post_row_actions', array( $this, 'remove_row_actions' ), 10, 2);
public function remove_row_actions( $action, $post ) {
    if ( 'slider' === get_post_type( $post ) ) {
        unset $action['view'];
        return $action;
    }
    return $action;
}
3
david.binda

get_current_screen()オブジェクトを調べるだけです。それはあなたが何を手に入れたのかを教えてくれるでしょう。 $queryおよびparse_requestフィルターの中にあるpre_get_posts引数についても同じことが言えます。

0
kaiser