Хак: визуальный редактор только для конкретных записей

Если у вас вдруг появилась необходимость сохранять html код страницы/записи в админке WordPress, но вы испытываете трудность от того, что расширенный редактор вырезает определенный код из исходного при переходе на него с режим HTML, то следующий хак вам поможет это исправить :)

Честно говоря, достаточно редко такое необходимо, но тем не менее…

В общем, открываете functions.php шаблона или главный файлы своего/любого плагина и вставляете следующий код:

add_action('init', 'hack_visual_editor');
function hack_visual_editor(){
    if( is_admin() && !empty($_GET['post']) && $_GET['action'] == 'edit' ){
        $slug = get_post_field( 'post_name', $_GET['post'] );
        if( $slug == 'sitemap' ) {
            global $current_user, $wp_rich_edit;
            $current_user->data->rich_editing = 'false';
            $wp_rich_edit = false;
        }
    }else{
        return false;
    }
}

Как видите, все достаточно просто – мы обманываем WordPress, заставляя его думать, что на текущей странице (в данном случае на странице редакторования записи со слагов 'sitemap') для текущего пользователя запрещен режим Визуального редактора.

Естественно, можно запрещять по любому параметру (например, ID или названию поста), для этого вам надо отредактировать строчку if( $slug == 'sitemap' ) {.

комментария 2

  1. Это больше похоже не на хак, а на костыль … Использование в данном случае простого if( $slug == ‘sitemap’ ) делает код слишком привязанным к конкретным страницам. Лучше всего было бы использовать или дополнительное поле (не сложно задать его при создании страницы) или даже визуальную “галочку” …

    • Запись в рубрике DevDocs :) Это тот код который мне нужно было сделать для проекта – другие варианты не подходили (нельзя было давать пользователям позможность что-то менять для вполне конкретных не меняющихся страниц).
      В любых случаях – идея ясна, реализация понятна, осталось заинтересованным просто поменять условие на нужное им – все просто :)

Добавить комментарий

Ваш адрес email не будет опубликован.