サポート » 使い方全般 » 管理画面のカスタム投稿の投稿画面を判定する方法

  • test 1234

    (@lifestyledesign7777)


    現在、投稿画面のデフォルト構成が下記になっています。
    *独自のカスタムフィールドを作って記事本文スマホ用を追加しています。
    ・記事タイトル
    ・記事本文
    ・記事本文スマホ用

    それで特定のカスタム投稿タイプの投稿画面だけ下記のようにしたいです。
    ・記事タイトルのみ

    現在はfunctions.phpで記事本文スマホ用を出力するように設定しているので、
    ・記事タイトル
    ・記事本文スマホ用
    以上の物が出ている状態です。

    記事本文スマホ用を追加している所に分岐文を書ければ解決できそうな気がするのですが、書き方がわかりません。
    is_adminは引数指定できないようですし、get_post_typeはfalseになるようですし、判定の仕方がわからないです。
    ご教授よろしくお願いいたします。

5件の返信を表示中 - 1 - 5件目 (全5件中)
  • アドバンスカスタムフィールドっていうプラグインで出来ますよ。

    カスタム投稿タイプ登録の際に、引数register_meta_box_cbに任意の関数名を指定します。(下記の場合、special_postという投稿タイプ登録時にmeta_boxes_for_mobileという関数を指定しています。)

    add_action( 'init', 'register_special_post' );
    
    function register_special_post() {
    
    	$labels = array( /* 省略 */ );
    
    	$args = array(
    		'labels' => $labels,
    		/* 省略 */
    		'register_meta_box_cb' => 'meta_boxes_for_mobile'
    	);
    
    	register_post_type( 'special_post', $args );
    }

    そして指定した関数定義内でメタボックスの追加をして下さい。

    function meta_boxes_for_mobile() {
    	add_meta_box( 'sp_post_title', /* 省略 */ );
    	add_meta_box( 'sp_post_content', /* 省略 */ );
    }

    あるいは、

    add_action( 'load-post.php', 'meta_boxes_for_mobile' );
    
    function meta_boxes_for_mobile() {
    	$post_id = filter_input( INPUT_GET, 'post' );
    	$post_type = get_post_type( $post_id );
    	if ( in_array( $post_type, array( 'post', 'page' ), true ) )
    		return;
    
    	add_meta_box( 'sp_post_title', /* 省略 */ );
    	add_meta_box( 'sp_post_content', /* 省略 */ );
    }

    前者は特定の投稿タイプのみでメタボックスを追加する方法ですね。
    今回の質問にはそぐわない回答でした。。

    後者の方法で条件分岐部分のコードを変えればお望みの挙動になるのではないでしょうか。

    すみません。後者のコードを修正させていただきます。

    add_action( 'load-post.php', 'meta_boxes_for_mobile' );
    add_action( 'load-post-new.php, 'meta_boxes_for_mobile' );
    
    function meta_boxes_for_mobile() {
    	if ( ! $post_type = filter_input( INPUT_GET, 'post_type' ) {
    		$post_id = filter_input( INPUT_GET, 'post' );
    		$post_type = get_post_type( $post_id );
    	}
    	if ( in_array( $post_type, array( 'post', 'page' ), true ) )
    		return;
    
    	add_meta_box( 'sp_post_title', /* 省略 */ );
    	add_meta_box( 'sp_post_content', /* 省略 */ );
    }

    修正前のままだと新規投稿でメタボックスが表示されません。

5件の返信を表示中 - 1 - 5件目 (全5件中)
  • トピック「管理画面のカスタム投稿の投稿画面を判定する方法」には新たに返信することはできません。