web-dev-qa-db-fra.com

add_editor_style ne se charge pas dans le frontend. Toute solution?

C'est la fonction par défaut de wordpress add_editor_style:

function add_editor_style( $stylesheet = 'editor-style.css' ) {

    add_theme_support( 'editor-style' );

    if ( ! is_admin() )
        return;

    global $editor_styles;
    $editor_styles = (array) $editor_styles;
    $stylesheet    = (array) $stylesheet;
    if ( is_rtl() ) {
        $rtl_stylesheet = str_replace('.css', '-rtl.css', $stylesheet[0]);
        $stylesheet[] = $rtl_stylesheet;
    }

    $editor_styles = array_merge( $editor_styles, $stylesheet );
}

Comme vous le voyez, if ( ! is_admin() ) return; est présent et, fondamentalement, nous ne pouvons pas ajouter de styles personnalisés à l'interface wp_editor. Quelle est la solution appropriée?

3
Ünsal Korkmaz

Voici ma solution:

add_filter('the_editor_content', "firmasite_tinymce_style");
function firmasite_tinymce_style($content) {
    add_editor_style('assets/css/custom.css');

    // This is for front-end tinymce customization
    if ( ! is_admin() ) {
        global $editor_styles;
        $editor_styles = (array) $editor_styles;
        $stylesheet    = (array) $stylesheet;

        $stylesheet[] = 'assets/css/custom.css';

        $editor_styles = array_merge( $editor_styles, $stylesheet );

    }
    return $content;
}

Exemple en direct: http://unsalkorkmaz.com/firmasite-social-buddypress-bbpress-theme-based-on-bootstrap/ Vérifier les commentaires wp_editor .. son chargement bootstrap.css et les polices de Google, etc.

Ce code est extra:

// Removing wordpress version from script and styles
add_action("wp_head", "firmasite_remove_version_from_assets",1);
function firmasite_remove_version_from_assets(){
    function remove_cssjs_ver( $src ) {
        if( strpos( $src, '?ver=' ) )
            $src = remove_query_arg( 'ver', $src );
        return $src;
    }
    add_filter( 'style_loader_src', 'remove_cssjs_ver', 999 );
    add_filter( 'script_loader_src', 'remove_cssjs_ver', 999 );
}

Sa suppression de la version des styles et des scripts. Donc, le navigateur ne charge pas le même style deux fois.

6
Ünsal Korkmaz

add_editor_style n'est pas destiné à charger une feuille de style sur le frontal. Il est conçu pour que l'éditeur visuel s'affiche sur le backend du site et ressemble davantage à la version finale du message sur le front-end. Il n'y a pas de filtre (vous avez trouvé la source de la fonction) qui vous permet de changer ce comportement.

Si vous avez un éditeur sur le front-end, appelez-le comme n'importe quoi d'autre - en modifiant style.css ou en chargeant conditionnellement une autre feuille de style avec wp_register_style , wp_enqueue_style et wp_enqueue_scripts

function load_front_editor_style_wpse_87256() {
  if (!is_page_template('editor.php')) return false;
  wp_register_style( 'fedstyle', get_stylesheet_directory().'/path/to/stylesheet', false, null, 'all' );
  wp_enqueue_style( 'fedstyle' );
}
add_action( 'wp_enqueue_scripts', 'load_front_editor_style_wpse_87256' ); 

Je ne sais pas comment votre éditeur fonctionne, mais j'ai inclus une condition qui ne devrait charger l'éditeur que sur un modèle nommé editor.php. Je suis sûr que c'est faux mais devrait être illustratif.

Caveat:Je ne sais pas quel est votre éditeur frontal ni comment il fonctionne. Je suppose que c'est l'éditeur de base que vous avez chargé au premier plan. Je sais que l'édition directe d'une feuille de style d'administrateur (appropriée ou non) modifiera l'apparence de l'éditeur backend. La même chose devrait être vraie sur le devant.

http://codex.wordpress.org/Function_Reference/get_stylesheet_directory
http://codex.wordpress.org/Function_Reference/is_page_template

2
s_ha_dum