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 );
});
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: