Установите флажок после отправки формы.Пользовательский тип сообщения, WordPress - PullRequest
0 голосов
/ 16 октября 2018

Я делаю свой собственный тип записи, где я в настоящее время отображаю все изображения из галереи с флажком для каждого изображения.Я хочу, чтобы пользователь мог установить флажок для изображения, которое он / она хочет отобразить в записи.Эта часть работает.Проблема в том, что флажок снят после отправки формы.Как мне проверить это?

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']) штуку с echo checked="checked" в флажке, но пока не повезло.Проблема в том, что $_POST['product_image'] является массивом?

С уважением, Mac.

1 Ответ

0 голосов
/ 17 октября 2018

Успешно решить это следующим образом:

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"' в элементе ввода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...