Optimieren Sie Shortcode-Rückrufe


7

Ich habe ein Plugin erstellt, um einige Shortcodes in meine WordPress-Site einzufügen. Aber ich bin ein PHP-Neuling, daher glaube ich, dass es einige Fehler oder Möglichkeiten zur Optimierung gibt.

Es funktioniert gut und anscheinend gibt es keine Probleme. Die Speichernutzung liegt bei 00.04MByte. Könnten Sie bitte einen Blick darauf werfen? Vielen Dank!

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' );

return 'Der CSS-Stil geht
hierher

1
All dies return '';sieht ziemlich nutzlos aus. Sind das echte Rückgabewerte?
Fuxia

Antworten:


11

Es gibt ein sehr wichtiges Programmierprinzip: TROCKEN - Wiederholen Sie sich nicht .
Wenn Sie feststellen, dass Sie fast denselben Job wiederholen, versuchen Sie, eine Abstraktion zu schreiben.

Für Ihre pad*Shortcodes bedeutet dies:

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

Jetzt können Sie den Shortcode folgendermaßen verwenden [pad]:

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

Der Vorteil ist: Wenn Sie die innere Logik Ihrer Shortcodes ändern möchten, müssen Sie nur eine Funktion berühren , nicht ein Dutzend.

Siehe auch diese Antwort .


Es gibt noch eine andere Möglichkeit: Verwenden Sie einen Rückruf für mehrere Shortcodes. Dies verwendet den dritten Parameter, den jeder Shortcode-Rückruf erhält.

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' );

verbunden

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.