如何删除模板下拉列表,但保留父项和顺序

时间:2013-03-14 作者:Anthoney Carter

我将把一个自定义Wordpress站点移交给客户,不希望他们能够选择/编辑模板,但需要允许他们按顺序排序页面并选择父页面。

有没有办法只从页面属性选项中删除模板下拉列表,而保留父选项和顺序选项?

1 个回复
SO网友:david.binda

当您从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

结束

相关推荐

Multiple Page Templates & CSS

在使用多个页面模板的主题上处理CSS的最佳实践是什么?例如:我将有一个全宽页面模板和一个两列页面模板。最好只在单个CSS中调用容器(#fullWidthContainer vs.#twoColumnContainer)还是为每个页面模板提供单独的CSS文件更好?