• 解決済 omarioooon

    (@omarioooon)


    クライアントにWPを納品し、
    カスタム投稿タイプで記事を書いて頂く際に、
    スラッグ=商品番号やサポート番号
    としそれぞれ必ずユニークな入力をルールとする想定。

    その際に表示オプションでスラッグにチェックを入れ、
    必ずここをユニークな英数字にして下さいとマニュアルを作るつもりなのですが。
    表示オプションのチェックが初期値でチェックされていない事に困っています。

    クライアントのアカウントをこちらで作り表示オプションをチェックし、
    アカウントを渡すといったワークフローにすればよいのですが、
    理想としては
    1、アカウントを追加した段階でデフォルトでチェックにする
    2,表示オプション自体を管理者以外で非表示にする
    という結果を希望しています。

    2は多くの情報があり、解決したのですが
    1の方法がわからなくハマっている状況です。

    ご教授お願いいたします。

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • <?php
    /**
     * @see https://github.com/WordPress/WordPress/blob/4.3-branch/wp-admin/includes/screen.php#L1045
     */
    add_filter( 'screen_options_show_screen', 'hide_screen_options', 10, 2 );
    function hide_screen_options( $show_screen, $screen ) {
    	if ( ! is_super_admin() && $screen->post_type === 'post' && $screen->base === 'post' ) {
    		$show_screen = false;
    	}
    	return $show_screen;
    }

    上記コードで一応消せました。
    条件分岐 $screen->post_type === 'post''post' は表示オプションを非表示にしたいカスタム投稿タイプ名に変更してください。

    あ、すみません。
    質問されていたのは 1 の方だったのですね… 勘違いしてました。

    hidden_meta_boxes というフィルターがあるのでこれを使えばいけそうですね。

    /**
     * @see https://github.com/WordPress/WordPress/blob/4.3-branch/wp-admin/includes/screen.php#L147
     */
    add_filter( 'hidden_meta_boxes', 'custom_hidden_meta_boxes', 10, 2 );
    function custom_hidden_meta_boxes( $hidden, $screen ) {
    	if ( $screen->post_type === 'post' && $screen->base === 'post' ) {
    		$slugdivkey = array_search( 'slugdiv', $hidden );
    		if ( $slugdivkey !== false ) {
    			unset( $hidden[$slugdivkey] );
    		}
    	}
    	return $hidden;
    }

    こちらも条件分岐部分を工夫してください。

    トピック投稿者 omarioooon

    (@omarioooon)

    mimosafa様

    ありがとう御座いました。
    こちらのフィルターを使用して思っていた通りの実装が可能になりました。

    本当にありがとうございました。

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • トピック「投稿画面におけるスラッグの表示」には新たに返信することはできません。