web-dev-qa-db-fra.com

Optimiser les rappels de shortcode

J'ai créé un plugin pour ajouter des shortcodes dans mon site WordPress. Mais je suis un novice PHP, je pense donc qu'il peut contenir des erreurs ou des moyens de l'optimiser.

Cela fonctionne bien et apparemment, il n'y a pas de problèmes. L'utilisation de la mémoire est à 00.04Mo. Pourriez-vous s'il vous plaît jeter un oeil? Merci beaucoup!

add_action( 'wp_enqueue_scripts', 'prefix_add_my_stylesheet' );

    function prefix_add_my_stylesheet() {
        // Respects SSL, Style.css is relative to the current file
        wp_register_style( 'prefix-style', plugins_url('style.css', __FILE__) );
        wp_enqueue_style( 'prefix-style' );
    }

/* Adsesnse Shortcode */
function get_adsense($atts) {
    return 'THE_ADSENSE_SCRIPT_GOES_HERE
';
}
add_shortcode('adsense', 'get_adsense');

/*Padding Shortcodes*/ 
function get_pad5($atts) {
    return '<div class="pad5"></div>';
}
add_shortcode('pad5', 'get_pad5');

function get_pad10($atts) {
    return '<div class="pad10"></div>';
}
add_shortcode('pad10', 'get_pad10');

function get_pad20($atts) {
    return '<div class="pad20"></div>';
}
add_shortcode('pad20', 'get_pad20');

function get_pad25($atts) {
    return '<div class="pad25"></div>';
}
add_shortcode('pad25', 'get_pad25');

function get_pad50($atts) {
    return '<div class="pad50"></div>';
}
add_shortcode('pad50', 'get_pad50');

function get_pad75($atts) {
    return '<div class="pad75"></div>';
}
add_shortcode('pad75', 'get_pad75');

function get_pad100($atts) {
    return '<div class="pad100"></div>';
}
add_shortcode('pad100', 'get_pad100');

function get_clr($atts, $content=null) {
     return '<div class="clr">' . $content . '</div>';
}
add_shortcode( 'clr', 'get_clr' );

/* Alert Boxes */
function get_alertblue($atts, $content=null) {
     return '<div class="ultra_alert_box ultra_box-blue">' . $content . '</div>';
}
add_shortcode( 'alertblue', 'get_alertblue' );

function get_alertgreen($atts, $content=null) {
     return '<div class="ultra_alert_box ultra_box-green">' . $content . '</div>';
}
add_shortcode( 'alertgreen', 'get_alertgreen' );

function get_alertyellow($atts, $content=null) {
     return '<div class="ultra_alert_box ultra_box-yellow">' . $content . '</div>';
}
add_shortcode( 'alertyellow', 'get_alertyellow' );

function get_alertred($atts, $content=null) {
     return '<div class="ultra_alert_box ultra_box-red">' . $content . '</div>';
}
add_shortcode( 'alertred', 'get_alertred' );

function get_alertgray($atts, $content=null) {
     return '<div class="ultra_alert_box ultra_box-gray">' . $content . '</div>';
}
add_shortcode( 'alertgray', 'get_alertgray' );

/* Style Boxes */

function get_stylegreen($atts, $content=null) {
     return '<div class="ultra_style_box ultra_style-green">' . $content . '</div>';
}
add_shortcode( 'stylegreen', 'get_stylegreen' );

function get_styleblue($atts, $content=null) {
     return '<div class="ultra_style_box ultra_style-blue">' . $content . '</div>';
}
add_shortcode( 'styleblue', 'get_styleblue' );

function get_styleyellow($atts, $content=null) {
     return '<div class="ultra_style_box ultra_style-yellow">' . $content . '</div>';
}
add_shortcode( 'styleyellow', 'get_styleyellow' );

function get_stylered($atts, $content=null) {
     return '<div class="ultra_style_box ultra_style-red">' . $content . '</div>';
}
add_shortcode( 'stylered', 'get_stylered' );

function get_stylegray($atts, $content=null) {
     return '<div class="ultra_style_box ultra_style-gray">' . $content . '</div>';
}
add_shortcode( 'stylegray', 'get_stylegray' );

function get_stylewhite($atts, $content=null) {
     return '<div class="ultra_style_box ultra_style-white">' . $content . '</div>';
}
add_shortcode( 'stylewhite', 'get_stylewhite' );
7
drabello

Il existe un principe de programmation très important: DRY - Ne vous répétez pas .
Lorsque vous réalisez que vous répétez presque le même travail, essayez d’écrire une abstraction.

Pour vos pad* codes abrégés, cela signifie:

function get_padding( $atts ) 
{
    $args = shortcode_atts( 
        array( 'num' => 10 ), 
        $atts 
    );
    return str_repeat( ' ', (int) $args['num'] );
}
add_shortcode('pad', 'get_padding');

Maintenant, vous pouvez utiliser le shortcode [pad] comme ceci:

[pad num=5]
[pad num=10]
[pad num=12000]
[pad num=18]

L'avantage est que si vous décidez de modifier la logique interne de vos codes courts, vous devez uniquement toucher une fonction , pas une douzaine.

Voir aussi cette réponse .


Il existe une autre possibilité: utiliser un rappel pour plusieurs codes abrégés . Ceci utilise le troisième paramètre que chaque rappel de shortcode obtient.

function multipass( $atts, $content = '', $shortcode = '' )
{
    $args = shortcode_atts(
        array (
            'name' => 'example'
        ),
        $atts
    );

    $name    = esc_attr( $args['name'] );
    $content = esc_textarea( $content );

    if ( 'textarea' === $shortcode )
        return "<textarea name='$name'>$content</textarea>";

    if ( 'input' === $shortcode )
        return "<input name='$name' value='$content' />";
}
add_shortcode( 'textarea', 'multipass' );
add_shortcode( 'input',    'multipass' );

En relation

11
fuxia