web-dev-qa-db-fra.com

ajout de classes personnalisées pour les tables

Je dois implémenter une classe par défaut pour HTML-Tables chez WordPress. Le wp-standard est <table>

.. ist-il un moyen de faire cela, que je reçois cette sortie par défaut? <table class="abc xyz">

peut-être avec des filtres?

1
hazelnut

Dans votre cas, vous devez ajouter un crochet personnalisé pour le filtre the_content:

add_filter( 'the_content', 'wpse8170_add_custom_table_class' );
function wpse8170_add_custom_table_class( $content ) {
    return str_replace( '<table>', '<table class="mycustom-class">', $content );
}

Ajoutez cet extrait à votre fichier functions.php.

2
Eugene Manuilov

J'ai fait une simple modification pour que le code reconnaisse les autres styles de la balise:

add_filter( 'the_content', 'wpse8170_add_custom_table_class' );
function wpse8170_add_custom_table_class( $content ) {
return str_replace( '<table', '<table class="my-class"', $content );
}
2
Andrés

Il n'y a pas de fonctionnalité de tableau dans les éditeurs par défaut, visuels ou textuels. Par conséquent, sauf si vous utilisez un éditeur tel que CKEditor qui génère ce balisage, j'utiliserais un shortcode.

function table_wrapper_wpse_114253( $atts, $content = null ) {
  return '<table class="abc xyz">'.$content.'</table>';
}
add_shortcode('table','table_wrapper_wpse_114253');

Dans votre contenu, écrivez simplement [table]...[/table] au lieu de <table>...</table>

Je dois ajouter que si votre thème utilise body_class et post_class correctement, et tout ce que vous voulez faire est d’ajouter une classe à chaque <table> dans le corps du message, il existe presque certainement un balisage existant qui rend inutile ce que vous faites, que vous utilisiez un filtrer sur the_content comme le suggère @EugeneManuilov ou un shortcode.

0
s_ha_dum