Измените собственный метабокс, чтобы получить список сообщений с внешнего веб-сайта WordPress (WP API) - PullRequest
0 голосов
/ 26 мая 2020

вот мой код для создания собственного метабокса для определенных типов сообщений. Это в основном создает выбор с публикацией на выбор. Теперь я хотел бы изменить функцию обратного вызова, чтобы получать сообщение с внешнего веб-сайта 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');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...