web-dev-qa-db-fra.com

Comment pouvez-vous ajouter un lien vers une description de la barre latérale?

Comment puis-je ajouter un lien vers une description de la barre latérale?

$sidebar_description = sprintf(__( 'Sidebar for the <a href="%s">%s</a> post', 'themetext' ), get_permalink($post->ID), $post->post_title);

register_sidebar(
    array(
        'name'              => $post->post_title . ' (' .  __( 'Post', 'themetext' ) . ')',
        'id'                => 'sidebar-'.$post->ID,
        'description'       => $sidebar_description,
        'before_widget'     => '<div id="%1$s" class="widget %2$s">',
        'after_widget'      => '</div>',
        'before_title'      => '<h3>',
        'after_title'       => '</h3>',
    )
);

Cela produira le A-tag en texte pur au lieu de HTML.

RÉPONSE

add_action( 'widgets_admin_page', function() use ( $sidebar_description ) {
    add_filter( 'esc_html', function( $safe_text, $text ) use ( $sidebar_description ) {
        if ( $text !== $sidebar_description )
            return $safe_text;

        remove_filter( current_filter(), __FUNCTION__ );

        return $sidebar_description;
    }, 10, 2 );
});
1
Mark

La description de la barre latérale passant par esc_html(), vous ne pouvez donc pas transmettre directement le code HTML. Mais vous pouvez utiliser le filtre esc_html pour insérer le contenu souhaité.

Voici un exemple simple:

add_action( 'widgets_init', function() {

    $desc = "Read the <a href='http://wordpress.stackexchange.com/q/189749/73'>explanation</a>!";
    $placeholder = 'PLACEHOLDER';
    register_sidebar([
        'id'          => 'wpse-189749',
        'name'        => 'Link description',
        'description' => $placeholder
    ]);

    add_action( 'widgets_admin_page', function() use ( $desc, $placeholder ) {
        add_filter( 'esc_html', function( $safe_text, $text ) use ( $desc, $placeholder ) {

            if ( $text !== $placeholder )
                return $safe_text;

            remove_filter( current_filter(), __FUNCTION__ );

            return $desc;
        }, 10, 2 );
    });
});

Résultat:

enter image description here

3
fuxia