Я создал пользовательский тип записи с помощью пользовательского мета-поля wysiwyg, которое я отображаю через Wordpress API Rest на другом веб-сайте.Вот моя функция для создания и отображения моего пользовательского мета-поля «Миссия» в моем API:
add_action( 'add_meta_boxes', 'mission_metabox' );
function mission_metabox()
{
add_meta_box('mission', 'Mission', 'mission_output', 'jobboard', 'normal', 'high');
}
function mission_output( $post )
{
$mission_value= get_post_meta($_GET['post'], 'mission' , true ) ;
wp_editor( htmlspecialchars_decode($mission_value), 'mission-facts',
$settings = array('textarea_name'=>'mission-facts') );
}
function save_mission( $post_id )
{
if (isset($_POST['mission-facts']))
{
$data=htmlspecialchars($_POST['mission-facts']);
update_post_meta($post_id, 'mission', $data );
}
}
add_action( 'save_post', 'save_mission' );
// add meta box to API
add_action( 'rest_api_init', 'slug_register_mission' );
function slug_register_mission() {
register_rest_field( 'jobboard',
'mission',
array(
'get_callback' => 'slug_get_mission',
'update_callback' => null,
'schema' => null,
)
);
}
function slug_get_mission( $object, $field_name, $request ) {
return get_post_meta( $object[ 'id' ], $field_name, true );
}
Вот что я получаю в своем API (http://website.com/wp-json/wp/v2/custom-post-type-api):
"mission": "<span style="color: #ff9900;"><b>my test in orange!</b></span>",
А вот что отображается на переднем конце:
<span style="color: #ff9900;"><b>my test in orange!</b></span>
Мне бы хотелось, чтобы мой тест был оранжевым! (очевидно, жирным и оранжевым)
Я нашел эту функцию для рендеринга контента, но не могу понять, как изменить ее для своего мета-блока:
add_action( 'rest_api_init', function ()
{
register_rest_field(
'page',
'content',
array(
'get_callback' => 'compasshb_do_shortcodes',
'update_callback' => null,
'schema' => null,
)
);
});
function compasshb_do_shortcodes( $object, $field_name, $request )
{
WPBMap::addAllMappedShortcodes(); // This does all the work
global $post;
$post = get_post ($object['id']);
$output['rendered'] = apply_filters( 'the_content', $post->post_content );
return $output;
}
Любая помощь будет принята с благодарностью!
///////// * РЕДАКТИРОВАТЬ * ///////////////
Мне удалось отобразить свой пользовательский ящик, изменив приведенную выше функцию:
function slug_get_mission( $object, $field_name, $request ) {
WPBMap::addAllMappedShortcodes(); // This does all the work
$mission=get_post_meta( $object[ 'id' ], $field_name, true );
$output['rendered'] = apply_filters( the_content, $mission );
return $output;
}
Теперь мой API показывает:
"mission": {
"rendered": <p><span style="color: #ff9900;"><b>my test in orange!</b></span></p>\n
},
И интерфейс отображает:
<span style="color: #ff9900;"><b>my test in orange!</b></span>
Так что я думаю, это не имеет ничего общего с рендерингом, но кодирование может быть