web-dev-qa-db-ja.com

[テンプレート]ドロップダウンを削除し、[親]と[順序]を維持する方法

私はカスタムWordpressサイトをクライアントに引き渡そうとしていて、それらがテンプレートを選択/編集できないようにしたいのですが、Orderでページをソートして親ページを選択できるようにする必要があります。

[ページ属性]オプションから[テンプレート]ドロップダウンを削除するだけで、[親]オプションと[順序]オプションを保持する方法はありますか。

1
Anthoney Carter

あなたが(あなたがコメントで書いたように)adminからそのボックスを削除するとき、あなたはそのボックスをレンダリングするためにカスタム関数(オリジナルに変更された)でそのボックスを再登録することができるはずです:

if ( post_type_supports($post_type, 'page-attributes') )
    add_meta_box('pageparentdiv', 'page' == $post_type ? __('Page Attributes') : __('Attributes'), 'my_page_attributes_meta_box', null, 'side', 'core');

function my_page_attributes_meta_box($post) {
    $post_type_object = get_post_type_object($post->post_type);
    if ( $post_type_object->hierarchical ) {
        $dropdown_args = array(
            'post_type'        => $post->post_type,
            'exclude_tree'     => $post->ID,
            'selected'         => $post->post_parent,
            'name'             => 'parent_id',
            'show_option_none' => __('(no parent)'),
            'sort_column'      => 'menu_order, post_title',
            'echo'             => 0,
        );

        $dropdown_args = apply_filters( 'page_attributes_dropdown_pages_args', $dropdown_args, $post );
        $pages = wp_dropdown_pages( $dropdown_args );
        if ( ! empty($pages) ) {
?>
<p><strong><?php _e('Parent') ?></strong></p>
<label class="screen-reader-text" for="parent_id"><?php _e('Parent') ?></label>
<?php echo $pages; ?>
<?php
        } // end empty pages check
    } // end hierarchical check.
    if ( 'page' == $post->post_type && 0 != count( get_page_templates() ) ) {
        $template = !empty($post->page_template) ? $post->page_template : false;
        ?>
<p><strong><?php _e('Template') ?></strong></p>
<label class="screen-reader-text" for="page_template"><?php _e('Page Template') ?></label><select name="page_template" id="page_template">
<option value='default'><?php _e('Default Template'); ?></option>
<?php page_template_dropdown($template); ?>
</select>
<?php
    } ?>
<p><strong><?php _e('Order') ?></strong></p>
<p><label class="screen-reader-text" for="menu_order"><?php _e('Order') ?></label><input name="menu_order" type="text" size="4" id="menu_order" value="<?php echo esc_attr($post->menu_order) ?>" /></p>
<p><?php if ( 'page' == $post->post_type ) _e( 'Need help? Use the Help tab in the upper right of your screen.' ); ?></p>
<?php
}

必要に応じて機能を変更できます。関数のコードは、 http://core.trac.wordpress.org/browser/tags/3.5.1/wp-admin/includes/meta-boxes.php#L618から取得されます。

1
david.binda