J'utilise Visual Composer, mais je pense que cela a plus à voir avec WordPress qu'avec VC ;-). J'ai fait un shortcode (avec l'API VC ) pour obtenir le contenu d'un article. La voici (dans functions.php):
add_filter( 'vc_grid_item_shortcodes', 'my_module_add_grid_shortcodes' );
function my_module_add_grid_shortcodes( $shortcodes ) {
$shortcodes['vc_post_id'] = array(
'name' => __( 'Post content', 'fluidtopics' ),
'base' => 'vc_post_content',
'category' => __( 'Content', 'fluidtopics' ),
'description' => __( 'Show current post content', 'fluidtopics' ),
'post_type' => Vc_Grid_Item_Editor::postType(),
);
return $shortcodes;
}
add_shortcode( 'vc_post_content', 'vc_post_content_render' );
function vc_post_content_render() {
return '{{ post_data:post_content }}';
}
Le contenu est vraiment rendu. La mise en page fournie par VC est également réalisée par des codes courts ... qui ne sont pas analysés et affichés avec le contenu. Je me demande s'il est possible d'obtenir ces codes courts analysés?
Cela peut être vu ici: https://www.fluidtopics.com/whats-new-2/ (troisième onglet, vous verrez [vc_row ] etc.)
Merci beaucoup pour toute aide !
Voici le code fourni par l'équipe VC. Et il fonctionne.
// display content in grid
add_filter( 'vc_grid_item_shortcodes', 'my_module_add_grid_shortcodes' );
function my_module_add_grid_shortcodes( $shortcodes ) {
$shortcodes['vc_post_content'] = array(
'name' => __( 'Post content', 'fluidtopics' ),
'base' => 'vc_post_content',
'category' => __( 'Content', 'fluidtopics' ),
'description' => __( 'Show current post content', 'fluidtopics' ),
'post_type' => Vc_Grid_Item_Editor::postType(),
);
return $shortcodes;
}
add_shortcode( 'vc_post_content', 'vc_post_content_render' );
function vc_post_content_render() {
return '{{ do_shortcode_post_content }}';
}
add_filter( 'vc_gitem_template_attribute_do_shortcode_post_content', 'vc_gitem_template_attribute_do_shortcode_post_content', 10, 2 );
function vc_gitem_template_attribute_do_shortcode_post_content( $value, $data ) {
/**
* @var null|Wp_Post $post ;
* @var string $data ;
*/
extract( array_merge( array(
'post' => null,
'data' => '',
), $data ) );
$atts_extended = array();
parse_str( $data, $atts_extended );
WPBMap::addAllMappedShortcodes();
$output = do_shortcode( $post->post_content );
ob_start();
// do_action( 'wp_enqueue_scripts' );
// wp_print_styles();
// wp_print_scripts();
// wp_print_footer_scripts();
$output .= ob_get_clean();
return $output;
}