Cette extension n’a pas été testée avec plus de trois mises à jour majeures de WordPress. Elle peut ne plus être maintenue ou supportée et peut avoir des problèmes de compatibilité lorsqu’elle est utilisée avec des versions de WordPress plus récentes.

Pastacode

Description

Avec Pastacode, partagez facilement des extraits de code dans vos articles. Ils seront mis en valeur grâce à la superbe librairie de coloration syntaxique PrismJs.
Vous pouvez ajouter du code source en le rédigeant directement dans un bloc de l’éditeur (ou dans l’éditeur classic si Gutenberg est désactivé), ou bien en l’important depuis des services tels que Github, Gist, Gitlab, Bitbucket, Bitbucket snippets, Pastebin… et ainsi ne plus ce soucier de mettre à jour vos articles (les codes resterons à jour). Pastacode fonctionne aussi dans les commentaires et les forum bbPress.

Ne vous souciez plus de mettre à jour vos articles quand vous modifiez vos codes !

Pastacode vous permet d’améliorer l’affichage de vos codes sources en faisant appel aux extensions de PrismJs (lignes surlignées, documentation des fonctions…)

Librairies tierces

Pastacode utilise quelques librairies open-source.

Captures d’écran

  • Éditez vos extraits de code avec le bloc Pastacode
  • Le rendu dans l’éditeur (coloré par Prism)
  • Vous pouvez importer des codes hébergés sur des webservices (gitlab, github…)
  • Si vous n’utilisez pas l’éditeur de bloc, une autre interface vous est proposée. Cette dernière repose sur une plugin TinyMCE (pour le bloc classic, et classic editor)
  • Le langage « Treeview » permet de partager une vue d’arborescence de répertoires et fichiers

Blocs

Cette extension fournit 1 bloc.

  • Pastacode Paste a code from github, bitbucket, gitlab, or write it here!

Installation

  1. Décompressez Pastacode dans votre répertoire des extensions
  2. Allez dans les réglages de Pastacode, et configurez votre thème de coloration et la durée du cache
  3. Hébergez vos extraits de code sur des services web (ou sur votre site)
  4. Pour l’utiliser :
    • Avec l’éditeur de bloc, utilisez le bloc « Pastacode »
    • Lors de l’édition d’un article, utilisez le bouton Pasta’a code pour ajouter du code source dans vos contenus

FAQ

Pour plus d’informations, rendez-vous sur le wiki de Pastacode

Quels sont les langages de programmation disponibles ?

  • HTML
  • CSS
  • JavaScript
  • PHP
  • C
  • C#
  • C++
  • Java
  • Sass
  • Python
  • SQL
  • Ruby
  • CoffeeScript
  • Bash
  • Apache conf
  • Less
  • HAML
  • Ligne de commande git
  • Haskell
  • Markdown
  • Typescript
  • Treeview (arborescence de repertoire)

Si vous utilisiez une autre extension de coloration syntaxique, sachez que des scripts de migration de codes sont à votre disposition 🙂

Qu’est ce que le langage « Treeview » ?

Vous pouvez l’employer pour afficher l’arborescence d’un répertoire. Composer votre code en utilisant des backticks, pipe et traits-d’union comme ceci :

root_folder/
|-- a first folder/ 
|   |-- holidays.mov
|   |-- javascript-file.js
|   `-- some_picture.jpg
|-- documents/
|   |-- spreadsheet.xls
|   |-- manual.pdf
|   |-- document.docx
|   `-- presentation.ppt
|         `-- test
`-- README.md

Comment définir une durée de cache personnalisée ?

Insérez ces lignes dans le fichier functions.php de votre thème&nbsp:

add_filter( 'option_pastacode_cache_duration', 'my_pastacode_cache_duration' );
function my_pastacode_cache_duration( $duration ) {
    $duration = DAY_IN_SECOND*3; // 3 days
    return $duration;
}

Comment modifier le thème de coloration syntaxique ?

7 thèmes de coloration syntaxiques inclus. Pour en changer rendez-vous dans la section Réglages > Pastacode.

Vous pouvez même construire les vôtres&nbsp:

Insérez ces lignes dans le fichier functions.php de votre thème&nbsp:

add_action( 'wp_enqueue_scripts', 'custom_enqueue_script', 11 );
function custom_enqueue_script() {
    $urlofmynewscheme = get_stylesheet_directory_uri() . '/prism-okaida-willy.css'; //this is an example
    wp_deregister_style( 'prismcss' );
    wp_register_style( 'prismcss', $urlofmynewscheme, false, '1', 'all' );
}

Inspirez-vous du thème par défaut « prism » pour créer vos propres colorations syntaxiques.

Comment filtrer la liste des langages disponible ?

Insérez ces lignes dans le fichier functions.php de votre thème&nbsp:

//If you just want php, html, css and javascript support
add_filter( 'pastacode_langs', '_pastacode_langs' );
function _pastacode_langs( $langs ) {
    $langs  = array(
        'php'          => 'PHP',
        'markup'       => 'HTML',
        'css'          => 'CSS',
        'javascript'   => 'JavaScript', );
    return $langs;
}

Compatibilité avec une navigation Ajax

Activer Pastacode sur les sites à navigation ajax, il vous faudra appliquer deux modifications :

  1. Activer la rétro-compatibilité dans le panneau de réglage
  2. Insérez cette ligne dans le fichier functions.php de votre thème : add_filter( 'pastacode_ajax', '__return_true' );
  3. Après chaque chargement ajax, exécutez cette fonction JavaScript : Prism.highlightAll();

Comment ajouter un nouvel hébergeur de code ?

Insérez ces lignes dans le fichier functions.php de votre thème&nbsp:

//Take WordPress SVN, for example
//register a provider
add_filter( 'pastacode_services', '_pastacode_services' );
function _pastacode_services( $services ) {
    $services['wordpress'] = 'core.svn.wordpress.org';
    return $services;
}

//Define pastabox lightbox inputs
add_action( 'pastacode_fields', '_pastacode_fields' );
function _pastacode_fields( $fields ) { 
    $fields['wordpress'] = array(  // 'wordpress' or 'whatever'
        'classes'     => array( 'wordpress' ), // same value as the key
        'label'       => sprintf( __('File path relative to %s', 'pastacode'), 'https://core.svn.wordpress.org/' ), 
        'placeholder' =>'trunk/wp-config-sample.php', //if placeholder isn't defined, it will be a textarea
        'name'        => 'path_id' //these value return shortcode attribute (path_id, repos, name, user, version)
        );
    $fields['pastacode-lines']['classes'][] = 'wordpress'; // Add ability to select lines
    $fields['pastacode-highlight']['classes'][] = 'wordpress'; // Add ability to highlight somes

    return $fields;
}

//Build the function to retrieve the code
// "pastacode_wordpress" hook name (1st param) = "pastacode_" + "wordpress" or "whatever"
add_action( 'pastacode_wordpress', '_pastacode_wordpress', 10, 2 );
function _pastacode_wordpress( $source, $atts ) {
    extract( $atts );
    if( $path_id ) {
        $req  = wp_sprintf( 'https://core.svn.wordpress.org/%s', str_replace( 'https://core.svn.wordpress.org/', '', $path_id ) );
        $code = wp_remote_get( $req );
        if( ! is_wp_error( $code ) && 200 == wp_remote_retrieve_response_code( $code ) ) {
            $data = wp_remote_retrieve_body( $code );
            $source[ 'url' ]  = $req; //url to view source
            $source[ 'name' ] = basename( $req ); //filename
            $source[ 'code' ] = esc_html( $data ); //the code !!   
            //$source[ 'raw' ] contain raw source code. But there are no raw source code delivered by WordPress SVN             
        }
    }
    return $source;
}

N’ajoutez surtout pas votre site principal ! Un contributeur pourrait alors ajouter un shortcode pour afficher le « wp-config.php » et le lire !

Avis

13 septembre 2019
This plugin really should have hundreds of 5 star reviews! I have been using it a long time and it works and looks great!
29 mars 2018
For creating in page code snippets this is just awesome
3 septembre 2016
I've been waiting for years for such a plugin! Pastacode is easy to use, well coded and looks gorgeous with any WordPress theme. Keep going!
Lire les 14 avis

Contributeurs/contributrices & développeurs/développeuses

« Pastacode » est un logiciel libre. Les personnes suivantes ont contribué à cette extension.

Contributeurs

“Pastacode” a été traduit dans 1 locale. Remerciez l’équipe de traduction pour ses contributions.

Traduisez « Pastacode » dans votre langue.

Le développement vous intéresse ?

Parcourir le code, consulter le SVN dépôt, ou s’inscrire au journal de développement par RSS.

Journal

3.0.1

  • 24 novembre 2022
  • Correction de bug : amélioration de la compatibilité avec les plugins d’optimisation qui minifient le HTML et supprimaient les retours chariots dans les blocs de code
  • Correction de bug : suppression d’une erreur de javascript provoquée par le choix du langage apacheconfig dans l’éditeur de blocs
  • Merci à WP Marmite de m’avoir notifié ces problèmes !

3.0

  • 15 novembre 2022
  • Support de Gutenberg (l’éditeur de bloc) ! 🎉 Utilisez le nouveau bloc pour écrire et insérer vos extraits de codes
  • Migre automatiquement du shortcode vers le nouveau bloc gutenberg
  • Retro-compatibilité avec l’ancien shortcode

2.1

  • 9 août 2019
  • Corrige un bug lié à la dépréciation de l’API 1.0 de Bitbucket
  • La compatibilité Gutenberg arrive bientôt…

2.0

  • 15 décembre 2016
  • compatible avec le module de commentaires de WordPress
  • régularisation des espaces superflus en début de code
  • masquage des titres « vides » sur les blocs de code saisis à la main
  • amélioration de l’expérience de rédaction de code avec Codemirror
  • icônes pour écrans haute définition
  • modale tinyMCE compatible avec les smartphones
  • amélioration des feuilles de styles de PrismJS et tinyMCE
  • changement de méthode de récupération des snippets à partir de GitHub (sans utiliser d’encodage en base64)
  • nouveau site de démonstration d’utilisation
  • résolution d’un problème de conversion du format de code court (entre les version 1.5 et 1.6)
  • Résolution du problème de saisie du caractère % dans les blocs de code

1.8

  • 22 août 2016
  • Nouveau mode de prévisualisation du code dans les vues TinyMCE

1.7

  • 19 août 2016
  • Pastacode est maintenant compatible avec l’extension bbPress

1.6

1.5.1

1.5

  • 23 juillet 2015
  • Implémentation de l’API views
  • Correction d’un bug lors de la création de nouveaux codes courts (les valeurs du code court précédent étaient reprises)

1.4.2

  • 21 janvier 2015
  • il et maintenant possible de cibler un fichier au sein d’un Gist
  • Suppression des fichiers de démonstration de PrismJs (index.html à l’intérieur du répertoire de l’extension)

1.4.1

1.4

  • 16 janvier 2015
  • Nouvelle fonctionnalité : vous pouvez maintenant éditer vos codes « manuels » en plein écran !
  • Mise à jour de PrismJs et de ses extensions
  • Nouvelle option pour choisir si les informations associées à un bloc de code apparaissent dessus ou dessous

1.3

  • 5 mai 2014
  • Amélioration du support de l’éditeur TinyMCE (placeholder visuel dans l’éditeur, nouveau bouton dans TinyMCE…)
  • Solution de secours en cas du dépassement des quotas de l’API de Github (supporte maintenant plus de 30 requêtes par heure)
  • Compatiblité ajax (en utilisant le hook pastacode_ajax)
  • Correction de bug&nbsp: retours chariots disgracieux sur l’affichage du code

1.2.1

  • 21 novembre 2013
  • Correction de bug :désactivation du cache pour les codes manuels

1.2

  • 15 octobre 2013
  • La modification de la durée de mise en cache ne déclenche plus de purge automatiquement
  • Nouveau bouton « Purger le cache » dans la page d’option utilisez-le pour supprimer tous les transients (ils contiennent les valeurs renvoyées par les hébergeurs de codes)
  • Correction d’un bug lors de la mise à jour des options

1.1

  • 12 octobre 2013
  • Filtres, actions, des hooks partout…
  • Mise à jour du format de code court (l’attribut « type » est devenu « provider » et un « / » est ajouté avant la fermeture)

1.0

  • 10 octobre 2013
  • Version initiale
  • Ajouter du code en utilisant une jolie boîte modale
  • Afficher du code à partir d’un fichier, GitHub, Gist, Pastebin ou Bitbucket
  • 13 langues disponibles
  • 6 thèmes de colorations syntaxiques
  • Support du cache pour les chargements de code à distance (durée par défaut : 1 semaine)