我正在制作自己的自定义帖子类型, 目前正在其中显示图库中的所有图像以及每个图像的复选框。我希望用户能够选中他/她想要在帖子上显示的图像的复选框。这部分有效。问题是提交表单后, 该复选框未选中。如何保持检查状态?
function po_product_image_html($post) {
echo '<div style="width: 80px; display: inline-block;">';
$imgs = get_media_library_images();
foreach ($imgs as $img)
{
echo '<img style="height: 80px; width: 80px; padding: 10px;" src="'.$img.'" />';
echo '<input name="product_image[]" type="checkbox" value="'.$img.'" />';
}
echo '</div>';
}
保存表格的功能。
function po_products_save_postdata() {
global $post;
update_post_meta($post->ID, 'product_desc', $_POST['product_desc']);
update_post_meta($post->ID, 'product_url', $_POST['product_url']);
update_post_meta($post->ID, 'product_image', $_POST['product_image']);
}
add_action('save_post', 'po_products_save_postdata');
从第一个代码段中使用的媒体库获取图像的功能。
function get_media_library_images()
{
$args = array(
'post_type' => 'attachment', 'post_mime_type' => 'image', 'post_status' => 'inherit', 'posts_per_page' => -1
);
$query_images = new WP_Query($args);
$images = array();
foreach ($query_images->posts as $image)
{
$images[] = $image->guid;
}
return $images;
}
我已经尝试过isset($ _ POST [‘product_image’])来在复选框中回显checked =” checked”, 但到目前为止还没有运气。 $ _POST [‘product_image’]是数组的问题吗?
最好的问候, Mac。
#1
设法通过以下方式解决它:
echo '<div>';
global $post;
$imgs = get_media_library_images();
$post_selected_images = get_post_meta($post->ID, 'product_image', true);
foreach ($imgs as $img) {
<input name="product_image[]" type="checkbox" <?php if(in_array($img, $post_selected_images)) echo 'checked="checked"'; ?> value="<?php echo $img ?>" />
<?php
echo '</div>';
}
echo '</div>';
如果$ img变量的值存储在$ post_selected_images数组中, 我只需在输入元素中回显’checked =” checked”‘。
评论前必须登录!
注册