使用LearnDash开发的Wordpress电子学习网站。 需要在wordpress之外使用帖子内容,但是内容带有短代码。
如何使用PHP和wordpress函数将短代码转换为HTML代码。 以下是示例内容:
[vc_row padding_top="0px" padding_bottom="0px" bg_video="" class="" style=""][vc_column fade_animation_offset="45px" width="1/1"][image src="942" alt="" href="" title="" info_content="" lightbox_caption="" id="" class="" style=""][gap size="1.313em" id="" class="" style=""]
当我访问该网页时,它会转换为HTML。但我只希望将上述内容的HTML内容显示在移动应用程序中。我不想下载完整的HTML页面。
答案 0 :(得分:0)
答案 1 :(得分:0)
REST API不会呈现短代码,因此必须强制执行。创建一个文件wp-content / mu-plugins / render-xyz-shortcodes.php。您可能必须为其创建mu插件,因为默认情况下不存在该插件。
<?php
/**
* Render the shortcode in wp-json API
*/
add_action( 'rest_api_init', function () {
register_rest_field(
'post',
'content',
array(
'get_callback' => 'render_xyz_do_shortcode',
'update_callback' => null,
'schema' => null,
)
);
register_rest_field(
'post',
'excerpt',
array(
'get_callback' => 'render_xyz_do_shortcode',
'update_callback' => null,
'schema' => null,
)
);
});
function render_xyz_do_shortcode( $object, $field_name, $request ) {
global $post;
$post = get_post($object['id']);
$output = array();
//Apply the_content's filter, one of them interpret shortcodes
switch( $field_name ) {
case 'content':
$output['rendered'] = apply_filters( 'the_content', $post->post_content );
break;
case 'excerpt':
$output['rendered'] = apply_filters( 'the_excerpt', $post->post_excerpt );
break;
}
$output['protected'] = false;
return $output;
}