it-swarm.com.de

füge eine neue Metabox zum Seiteneditor hinzu

Ich führe eine Multisite-Installation durch und habe das Meta-Feld für Seitenattribute für meine Benutzer aus der Ansicht entfernt, weil sie keine Vorlagen ändern dürfen. Ich möchte, dass sie in der Lage sind, das übergeordnete Element der Seite zu ändern. Ich muss ein neues Meta-Feld für Seiten hinzufügen, das nur den übergeordneten Seiten-Selektor wieder hinzufügt.

1
user3617

Habe gerade das für eines meiner Plugins gemacht, vor kurzem ...

function render($post) {
    $pages = wp_dropdown_pages(array('post_type' => 'page', 'exclude_tree' => $post->ID, 'selected' => $post->post_parent, 'name' => 'parent_id', 'show_option_none' => __('(no parent)'), 'sort_column'=> 'menu_order, post_title', 'echo' => 0));
    if (!empty($pages)) {
        ?>
        <p><strong><?php _e('Parent') ?></strong></p>
        <label class="screen-reader-text" for="parent_id"><?php _e('Landing Page') ?></label>
        <?php echo $pages; ?>
        <?php
    }
    ?>
    <?php
}

Ich implementiere meine Metaboxen als Klassen, daher der lustige Funktionsname. Ich habe das Feld für die Menüreihenfolge entfernt, das ich ursprünglich in meiner Metabox gespeichert hatte. Ich halte es für eine gute Idee, sie beizubehalten.

Die ursprüngliche Metabox 'attributes' finden Sie übrigens in wp-admin/includes/meta-boxes.php, einer nützlichen Codebibliothek, die Sie sich ansehen sollten, wenn Sie benutzerdefinierte Metaboxen implementieren.

2
wyrfel

dank der hilfe von @wyrfel konnte ich das zum laufen bringen. Ich musste den Code bearbeiten, den Sie mir gegeben haben, und den Code zum Hinzufügen von Meta-Boxen, da diese Funktion bereits Teil des Kerns ist. Für alle anderen, die hier suchen, ist es das, was ich letztendlich verwendet habe (das Ganze wurde der Datei functions.php hinzugefügt).

// add page parent metabox
define('MY_WORDPRESS_FOLDER',$_SERVER['DOCUMENT_ROOT']);
define('MY_THEME_FOLDER',str_replace("\\",'/',dirname(__FILE__)));
define('MY_THEME_PATH','/' . substr(MY_THEME_FOLDER,stripos(MY_THEME_FOLDER,'wp-content')));

add_action('admin_init','my_meta_init');

function my_meta_init()
{ 
    // add a meta box for each of the wordpress page types: pages
    foreach (array('page') as $type) 
    {
        add_meta_box('my_all_meta', 'Page Parent', 'my_meta_setup', $type, 'side', 'low');
    }

    // add a callback function to save any data a user enters in
    //add_action('save_post','my_meta_save');
}

function my_meta_setup($post) {
$post_type_object = get_post_type_object($post->post_type);
    if ( $post_type_object->hierarchical ) {
        $pages = wp_dropdown_pages(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));
        if ( ! empty($pages) ) {
?>
<p><strong><?php _e('Parent for this page:') ?></strong></p>
<label class="screen-reader-text" for="parent_id"><?php _e('Parent') ?></label>
<?php echo $pages; 
        }
    }
}
0
user3617