web-dev-qa-db-fra.com

Comment puis-je contrôler la sortie HTML de mon message?

Comme vous le savez déjà, WordPress manipule les publications, même si vous écrivez tout en mode Texte . (remplacer les sauts de ligne par les caractères \r\n, convertir les guillemets simples en guillemets doubles, etc.)

Je sais que c’est bon pour nous aider à ne pas gâcher les choses, mais dans mon cas, je veux insérer des codes HTML dans mes balises post-<code> et </code>, ainsi que du code HTML directement.

je veux donc être sûr de ce que je vois en mode texte (ou installer un mode HTML d'une manière ou d'une autre), de sorte que ce que je vois soit ce que j'obtiens , en termes de HTML :)

Peut-être une meilleure explication de ce que je veux est la suivante:

Ce que j'écris dans la fenêtre "ajouter un nouveau message" doit être exactement égal à ce qui est imprimé entre <div class='entry-content'> et </div>.

Des conseils pour cela?

Devrais-je changer de thème? Ou un plugin pour tinymce?

p.s .:

Je sais que les guillemets simples doivent être protégés pour la base de données, mais je souhaite préserver les sauts de ligne, les balises html, etc. Alors, dites-moi qu'il existe un autre moyen que d'écrire directement dans la base de données.

2
jeff

J'ai décidé que la meilleure solution consiste simplement à désactiver l'éditeur visuel, à partir de Utilisateurs -> Votre profil -> Désactiver l'éditeur visuel lors de l'écriture.

1
jeff

get_user_meta() est un wrapper pour get_metadata() . Au cas où cela serait déclenché pour demander si un utilisateur peut utiliser l'éditeur riche, vous pouvez le désactiver avec cet appel.

<?php
/**
 * Plugin Name: (#116210) Disable RichEdit by User or Role
 * Author:      Franz Josef Kaiser <[email protected]>
 */
defined( 'ABSPATH' ) OR exit;

add_filter( 'get_user_metadata', 'wpse116210VisualEditorDisabled', 20, 4 );
function wpse116210VisualEditorDisabled( $enabled, $object_id, $meta_key, $single ) {
    if ( ! is_admin() )
        return $enabled;

    // Conditional switch for different post types
    if ( 'post' === get_current_screen()->post_type )
    {
        $user = wp_get_current_user();
        // Check here if you want *that* user/role to be enabled/disabled.
        $enabled = FALSE;
    }

    return $enabled;
}

Une autre option pourrait être d’utiliser la vérification WP_Role#has_cap (au cas où elle serait utilisée ici). Il a aussi un filtre: 'role_has_cap'

<?php
/**
 * Plugin Name: (#116210) Disable RichEdit by Role
 * Author:      Franz Josef Kaiser <[email protected]>
 */
defined( 'ABSPATH' ) OR exit;

add_filter( 'role_has_cap', 'wpse116210RoleHasCap' );
function wpse116210RoleHasCap( $allCaps, $checkedCap, $roleName )
{
    $role = get_role( $roleName );
    // Do your check if you want to allow it. Return *boolean*.

    return $allCaps[ $checkedCap ];
}
0
kaiser

IIRC c'est le filtre meta/caps de l'utilisateur:

<?php
/**
 * Plugin Name: (#116210) Disable RichEdit for some post types
 * Author:      Franz Josef Kaiser <[email protected]>
 */
defined( 'ABSPATH' ) OR exit;

add_filter( 'user_can_richedit', function( $enabled ) {
    if ( ! is_admin() )
        return $enabled;

    // Conditional switch for different post types
    // If you want to check against multiple post types, use in_array()
    return 'post' === get_current_screen()->post_type;
}

Si vous souhaitez le désactiver globalement pour tous les types de publication, vous pouvez utiliser le raccourci suivant:

<?php
/**
 * Plugin Name: (#116210) Disable RichEdit for some post types
 * Author:      Franz Josef Kaiser <[email protected]>
 */
defined( 'ABSPATH' ) OR exit;
add_filter( 'user_can_richedit', '__return_false' );
0
kaiser