wake-up-neo.net

Holen Sie sich alle Beiträge vom benutzerdefinierten Beitragstyp und fügen Sie sie als Metabox in ausgewählte Eingaben ein

Ich würde gerne wissen, ob es möglich ist, so etwas zu tun. Ich habe Slider benutzerdefinierten Beitragstyp und Services benutzerdefinierten Beitragstyp.

Für Slider-Posts habe ich eine Metabox für den URL-Wert erstellt, die neben allen Slider-Posts angezeigt wird. Was ich jetzt tun möchte, ist, alle Posts von Services custom post type abzurufen und sie in dieser Metabox für Slider-Posts als Auswahleingabe anzuzeigen, damit ich auswählen kann, zu welchem ​​Post der Link gehen soll.

Danke im Voraus :)

Hier ist der aktuelle Code:

function rm_display_slider_metabox($post) {

    wp_nonce_field(basename(__FILE__), 'slider_nonce');

    $slide_url_value = get_post_meta($post->ID, '_slide_url', true);
    $slide_url = isset($slide_url_value) ? esc_attr($slide_url_value) : '';

    $services_loop = new WP_Query(
        array(
            'post_type' => 'services',
            'posts_per_page' => -1,
            'post_status' => 'publish'
    ));


?>
    <div class="slider meta">
        <p>
            <label for="slide-url"><?php _e('Select URL from the dropdown below for this slide', 'rmtheme' ); ?></label>
            <br />
            <select name="_slide_url">
                <?php while ($services_loop->have_posts()) : $services_loop->the_post(); ?>
                    <option value="<?php the_permalink(); ?>"><?php the_title(); ?></option>
                <?php endwhile; ?>
            </select>
        </p>
    </div>

<?php 

}

function rm_save_slider_meta($post) {

    global $post;

    if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE)
        return $post_id;

    if (!isset($_POST['slider_nonce']) || !wp_verify_nonce($_POST['slider_nonce'], basename(__FILE__)))
        return $post_id;

    if (!current_user_can('edit_post'))
        return $post_id;

    $allowed = array(   
        'a' => array(
            'href' => array()
        )  
    );

    if (isset($_POST['_slide_url']))
        update_post_meta($post->ID, '_slide_url', wp_kses($_POST['_slide_url'], $allowed));

}

add_action('save_post', 'rm_save_slider_meta');
add_action('add_meta_boxes', 'rm_slider_metabox');
3

(0. Rufen Sie den Metawert mit get_post_custom ab (um den ausgewählten Wert in der Auswahleingabe hervorzuheben).)

  1. Beiträge abfragen mit get_posts( array( 'post_type' => 'services', 'post_status' => 'publish' ) )

  2. Durchlaufen Sie die Ergebnisse mit foreach und erstellen Sie Ihre Auswahleingabe.

  3. Rufe save_post auf (add_action('save_post', 'my_save_meta'), um den ausgewählten Wert zu speichern (mit update_post_meta).

3
ptriek