Comment personnaliser Pastacode

Nous avons mis à point d’honneur à ce que le plugin puisse s’adapter aux besoins spécifiques des développeurs-blogueurs. Vous pourrez très facilement créer votre propre thème de couleur, ajouter le support de nouveaux langages ou permettre l’insertion à partir d’autres sources externes

Si vous aimez ce plugin, n’hésitez pas à lui laisser une note sur WordPress.org !

Comment définir une date d’expiration personnalisée ?

<?php
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 charger son thème de coloration syntaxique personnalisé ?

<?php
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' );
}

Comment filtrer les languages supportés ?

<?php
//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;
}

Comment ajouter un nouveau fournisseur de code ?

<?php
//Take WordPress SVN, for example
//register a provider
add_filter( 'pastacode_services', '_pastacode_services' );
function _pastacode_services( $services ) {
    $services['wordpress'] = 'Importer du code (cœur de WordPress)';
    return $services;
}

//Define pastabox lightbox inputs
add_action( 'pastacode_fields', '_pastacode_fields' );
function _pastacode_fields( $fields ) { 
    $new_field = array( 'wordpress' => array(  // 'wordpress' or 'whatever'
        'classes'     => array( 'wordpress' ), // same value as the key
        'label'       => sprintf( __('File path relative to %s', 'pastacode'), 'http://core.svn.wordpress.org/' ), 
        'placeholder' =>'trunk/wp-config-sample.php', //if placeholder isn't defined, it will be a textarea
        'name'        => 'path_id',
        ) );
    array_splice( $fields, 3, 0, $new_field );
    $fields['pastacode-lines']['classes'][] = 'wordpress';
    $fields['pastacode-highlight']['classes'][] = 'wordpress';
    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( 'http://core.svn.wordpress.org/%s', str_replace( 'http://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;
}

Comment activer le mode de coloration asynchrone ?

<?php
// add data-manual attribute, then call Prism in async way
add_filter( 'script_loader_tag', 'pastacode_async', 10, 3 );
function pastacode_async ( $tag, $handle, $src ) {
	if ( 'prismjs' == $handle ) {
		$tag = str_replace( '<script ', '<script data-manual ', $tag );
		$tag .= '<script>jQuery(document).ready(function($){Prism.highlightAll(true);});</script>';
	}
	return $tag;
}

Comment activer le mode ajax ?

add_filter( 'pastacode_ajax', '__return_true' );
Prism.highlightAll();

Comment supporter de nouveaux languages ?

add_action( 'wp_enqueue_scripts', 'custom_enqueue_script', 11 );
function custom_enqueue_script() {
	wp_deregister_script( 'prismjs' );
	wp_register_script( 'prismjs', get_stylesheet_directory_uri() . '/my-prismjs.css', false, true );
}

add_filter( 'pastacode_langs', 'pastacode_new_languages' );
function pastacode_new_languages( $languages ) {
	unset( $languages['cpp'] ); // I dont want C++
	$languages['scala'] = 'Scala'; // I want Scalasmile
	return $languages;
}