вот мой код для создания собственного метабокса для определенных типов сообщений. Это в основном создает выбор с публикацией на выбор. Теперь я хотел бы изменить функцию обратного вызова, чтобы получать сообщение с внешнего веб-сайта WordPress (разные базы данных и сервер). Я читал, что WP REST API может быть полезен для получения желаемого результата. Любые подсказки о том, как действовать? В основном мне нужно отредактировать функцию обратного вызова с помощью запроса api get.
Спасибо.
// Add the Meta Box
function add_related_article_meta_box() {
add_meta_box(
'related_article_meta_box', // $id
'Related Article', // $title
'show_related_article_meta_box', // $callback
'wpdmpro', // $post type
'side', // $position
'high'); // $priority
}
add_action('add_meta_boxes', 'add_related_article_meta_box');
// Array field
$prefix = 'related_article_';
$custom_meta_fields = array(
array(
'label' => 'Post List',
'desc' => 'Select your article',
'id' => $prefix.'post_id',
'type' => 'post_list',
'post_type' => array('post')
)
);
// Callback
function show_related_article_meta_box() {
global $custom_meta_fields, $post;
// nonce verify
echo '<input type="hidden" name="related_article_meta_box_nonce" value="'.wp_create_nonce(basename(__FILE__)).'" />';
// form table start and loop
echo '<table class="form-table">';
foreach ($custom_meta_fields as $field) {
// get filed value if exists
$meta = get_post_meta($post->ID, $field['id'], true);
// table tr start
echo '<tr>
<td>';
switch($field['type']) {
// Post List
case 'post_list':
$items = get_posts( array (
'post_type' => $field['post_type'],
'posts_per_page' => 1000
));
echo '<select name="'.$field['id'].'" id="'.$field['id'].'">
<option value="">Select</option>'; // Post Select
foreach($items as $item) {
$custom_post_date = date_i18n( 'd-m-Y', strtotime($item->post_date));
echo '<option value="'.$item->ID.'"',$meta == $item->ID ? ' selected="selected"' : '','>' .$custom_post_date. '- ' .$item->post_title.'</option>';
} // end foreach
echo '</select><br /><span class="description">'.$field['desc'].'</span>';
break;
} //end switch
echo '</td></tr>';
} // end foreach
echo '</table>'; // end table
}
// Save data
function save_custom_meta($post_id) {
global $custom_meta_fields;
// verifica nonce
if (!wp_verify_nonce($_POST['related_article_meta_box_nonce'], basename(__FILE__)))
return $post_id;
// check autosave
if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE)
return $post_id;
// check permessions
if ('page' == $_POST['post_type']) {
if (!current_user_can('edit_page', $post_id))
return $post_id;
} elseif (!current_user_can('edit_post', $post_id)) {
return $post_id;
}
// loop into fields and save
foreach ($custom_meta_fields as $field) {
$old = get_post_meta($post_id, $field['id'], true);
$new = $_POST[$field['id']];
if ($new && $new != $old) {
update_post_meta($post_id, $field['id'], $new);
} elseif ('' == $new && $old) {
delete_post_meta($post_id, $field['id'], $old);
}
} // end foreach
// save taxonomies
$post = get_post($post_id);
$category = $_POST['category'];
wp_set_object_terms( $post_id, $category, 'category' );
}
add_action('save_post', 'save_custom_meta');