it-swarm.com.de

Visuellen Editor der Seite ausblenden, wenn eine bestimmte Vorlage ausgewählt ist?

Wie verstecke ich den Seiteneditor (WYSIWYG-Editor), wenn die aktuelle Seite auf eine bestimmte Vorlage festgelegt ist?.

Ich muss den folgenden Code bereits in benutzerdefinierte Meta-Boxen einfügen, wenn bestimmte Vorlagen ausgewählt werden:

add_action('admin_init','my_meta_init');
function my_meta_init()
{
    $post_id = $_GET['post'] ? $_GET['post'] : $_POST['post_ID'];
    $template_file = get_post_meta($post_id, '_wp_page_template', TRUE);

    $savemeta = true;

    if ($template_file == 'template-page-2quotes.php') {
        add_meta_box('main_quote_meta-meta', 'Top Quote', 'main_quote_meta', 'page', 'side', 'low');
        add_meta_box('sub_quote_meta-meta', 'Right Hand Side Quote', 'sub_quote_meta', 'page', 'normal', 'low');
    } elseif ($template_file == 'template-page-1quote.php') {
        add_meta_box('sub_quote_meta-meta', 'Right Hand Side Quote', 'sub_quote_meta', 'page', 'normal', 'low');
    } elseif ($template_file == 'template-page-factsnfigures.php') {
        add_meta_box('facts_n_figures-meta', 'Amount Raised', 'facts_n_figures', 'page', 'normal', 'low');
    } elseif ($template_file == 'template-page-fundraising.php') {
        add_meta_box('fundraising_ideas-meta', 'Fundraising Ideas', 'fundraising_ideas', 'page', 'side', 'low');
    } else {
        $savemeta = false;  
    }
    if($savemeta == true) {
        add_action('save_post','my_meta_save');
    }
}

Ich möchte zum Beispiel, dass der Editor entfernt wird, wenn $template_file == 'template-page-2quotes.php'

Bearbeiten (Arbeitscode):

add_action('admin_init','my_meta_init');
function my_meta_init()
{
    $post_id = $_GET['post'] ? $_GET['post'] : $_POST['post_ID'];
    $template_file = get_post_meta($post_id, '_wp_page_template', TRUE);

    $savemeta = true;
    $hideeditor = false;

    if ($template_file == 'template-page-2quotes.php') {
        add_meta_box('main_quote_meta-meta', 'Top Quote', 'main_quote_meta', 'page', 'side', 'low');
        add_meta_box('sub_quote_meta-meta', 'Right Hand Side Quote', 'sub_quote_meta', 'page', 'normal', 'low');
    } elseif ($template_file == 'template-page-1quote.php') {
        add_meta_box('sub_quote_meta-meta', 'Right Hand Side Quote', 'sub_quote_meta', 'page', 'normal', 'low');
    } elseif ($template_file == 'template-page-factsnfigures.php') {
        add_meta_box('facts_n_figures-meta', 'Amount Raised', 'facts_n_figures', 'page', 'normal', 'low');
    } elseif ($template_file == 'template-page-fundraising.php') {
        add_meta_box('fundraising_ideas-meta', 'Fundraising Ideas', 'fundraising_ideas', 'page', 'side', 'low');
    } elseif($template_file == 'template-page-news.php') {
        $hideeditor = true;
        $savemeta = false;
    } else {
        $savemeta = false;  
    }
    if($savemeta == true) {
        add_action('save_post','my_meta_save');
    }
    if($hideeditor == true) {
        add_action('admin_print_styles', 'admin_no_editor_style');
    }
}
function admin_no_editor_style() {
    echo "<style>#postdivrich{display:none;}</style>";
}
7
Brady
add_action( 'init', 'remove_editor_init' );

function remove_editor_init() {
    // If not in the admin, return.
    if ( ! is_admin() ) {
       return;
    }

    // Get the post ID on edit post with filter_input super global inspection.
    $current_post_id = filter_input( INPUT_GET, 'post', FILTER_SANITIZE_NUMBER_INT );
    // Get the post ID on update post with filter_input super global inspection.
    $update_post_id = filter_input( INPUT_POST, 'post_ID', FILTER_SANITIZE_NUMBER_INT );

    // Check to see if the post ID is set, else return.
    if ( isset( $current_post_id ) ) {
       $post_id = absint( $current_post_id );
    } else if ( isset( $update_post_id ) ) {
       $post_id = absint( $update_post_id );
    } else {
       return;
    }

    // Don't do anything unless there is a post_id.
    if ( isset( $post_id ) ) {
       // Get the template of the current post.
       $template_file = get_post_meta( $post_id, '_wp_page_template', true );

       // Example of removing page editor for page-your-template.php template.
       if (  'page-your-template.php' === $template_file ) {
           remove_post_type_support( 'page', 'editor' );
           // Other features can also be removed in addition to the editor. See: https://codex.wordpress.org/Function_Reference/remove_post_type_support.
       }
    }
}
12
foread
add_action('init', 'remove_editor_init');
function remove_editor_init() {
    remove_post_type_support('page', 'editor');
}

Sie können dies in Ihre vorhandene Logik zum Erkennen der aktuellen Seitenvorlage einschließen, sodass Sie den Editor nur für bestimmte Seiten deaktivieren.

Siehe: http://codex.wordpress.org/Function_Reference/remove_post_type_support

5
Jonathan Nicol

sie können eine einfache CSS-Regel mit display:none; in Ihren Metabox-Funktionscode einfügen:

if ($template_file == 'template-page-2quotes.php') {
   echo '<style>#postdivrich{display:none;}</style>';
}
3
Bainternet

Zusätzlich zu den hervorragenden Nur-WP-Antworten können Benutzer des Advanced Custom Fields Plugins einfach eine einzelne Direktive zu ihren Felddefinitionen hinzufügen, um den Editor von den zugehörigen Seiten zu entfernen:

$args = array(); // Already defined with many elements

$args['hide_on_screen'] = array('the_content'); // Remove the Editor from associated Pages

acf_add_local_field_group($args); // Already defined for use with extant $args

Da dies ein außerordentlich verbreitetes Plugin in den WP Shops ist, mit denen ich gearbeitet habe, sollte diese Methode erwähnt werden.

0
dotancohen