このようなことができるかどうかを知りたいのですが。 スライダー カスタム投稿タイプと サービス カスタム投稿タイプがあります。
スライダー投稿の場合は、すべてのスライダー投稿の横に表示するURL値のメタボックスを作成しました。私が今したいのは、 サービスのカスタム投稿タイプ からすべての投稿を取得し、それらを選択入力としてこのスライダー投稿メタボックスに表示することです。
前もって感謝します :)
これが現在のコードです:
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');
(0.メタデータをget_post_custom
で取得します(選択入力で選択された値を強調表示するため))。
get_posts( array( 'post_type' => 'services', 'post_status' => 'publish' ) )
による投稿のクエリ
foreach
を使用して結果をループ処理し、選択入力を構築します。
Save_post(add_action('save_post', 'my_save_meta')
)にフックして選択した値を(update_post_meta
で)保存します。