J'ai créé une fonction pour créer un shortcode dans function.php. Cette fonction ressemble à celle ci-dessous
function related_category_sidebar() {
include_once(WP_PLUGIN_DIR.'/sabai-directory/assets/templates/template_related_category.php');
}
add_shortcode( 'related_category', 'related_category_sidebar' );
Maintenant, j'ai créé un sidebar de widget personnalisé comme:
add_action( 'widgets_init', 'theme_slug_widgets_init' );
function theme_slug_widgets_init() {
register_sidebar( array(
'name' => __( 'Related Category', 'theme-slug' ),
'id' => 'rel_cat',
'description' => __( 'Widgets in this area will be shown on all posts and pages.', 'theme-slug' ),
'before_widget' => '<li id="%1$s" class="widget %2$s">',
'after_widget' => '</li>',
'before_title' => '<h2 class="widgettitle">',
'after_title' => '</h2>',
) );
}
Maintenant, j'ai ajouté un widget texte dans cette zone de widget Related category
. Ensuite, après avoir appelé la zone de widget dans un fichier personnalisé en tant que:
<?php dynamic_sidebar('rel_cat'); ?>
Mais shorcode ne fonctionne pas. Ici, j’ai utilisé <?php echo do_shortcode('[related_category]'); ?>
directement dans le fichier pour que cela fonctionne.
Mais, je veux utiliser un shortcode en utilisant la zone du widget, que dois-je changer dans mon code?
Les codes courts doiventreturndata, et non pas echo-it - utilisez output buffering pour capturer la sortie de l'include et la renvoyer:
function related_category_sidebar() {
ob_start();
include WP_PLUGIN_DIR . '/sabai-directory/assets/templates/template_related_category.php';
return ob_get_clean();
}
Ensuite, vous devrez également faire ce que Charles a suggéré et activer les codes courts pour les widgets de texte:
add_filter( 'widget_text', 'do_shortcode', 11 );