Как получить список элементов в медиатеке Wordpress на странице настроек плагина? - PullRequest
3 голосов
/ 04 июля 2010

Я пишу плагин Wordpress, который внедряет сетку изображений чуть выше нижнего колонтитула на всех страницах веб-интерфейса.Приложение для отображения логотипов спонсора.Я хотел бы использовать WP Media Library, так как логотипы уже загружены для использования на странице спонсорства и в постах.

По сути, я застрял при доступе к интерфейсу библиотеки мультимедиа на странице настроек плагина.Вся работа выполняется с точки зрения создания страницы параметров, использования ловушки действий для размещения содержимого на страницах внешнего интерфейса из плагина и т. Д. Теперь мне нужно отобразить все файлы в библиотеке мультимедиа в виде списка.на странице параметров и установите флажок или что-то, что позволит пользователю выбирать определенные файлы для вставки над нижним колонтитулом.

API библиотеки мультимедиа, по-видимому, нацелено на людей, пишущих темы или подключаемые модули мультимедиа.Помочь понять, что использовать, было бы здорово!

1 Ответ

4 голосов
/ 04 июля 2010

Я думаю, вам лучше добавить свой собственный столбец в существующую библиотеку мультимедиа, чем пытаться перекодировать его самостоятельно;

function my_media_col($cols)
{
    $cols['my_col'] = 'Footer';
    return $cols;
}
add_filter('manage_media_columns', 'my_media_col');

function handle_my_media_col($name, $id)
{
    if ($name !== 'my_col')
        return false;
    $in_footer = get_option('in_footer', array());
?>
<input type="checkbox" name="in_footer[]" value="<?php echo $id; ?>" <?php checked(in_array($id, $in_footer)); ?> />
<?php
}
add_action('manage_media_custom_column', 'handle_my_media_col', 10, 2);

Затем просто подключитесь к load-upload.php (странице библиотеки) и сохраните изменения, когда POST'ed;

function save_my_col()
{
    if (!isset($_POST['in_footer']))
        return false;

    $in_footer = $_POST['in_footer'];
    if (is_array($in_footer))
        $in_footer = array_map('absint', $in_footer); // sanitize
    else
        $in_footer = array();

    $in_footer = array_merge(get_option('in_footer', array()), $in_footer);
    $in_footer = array_unique(array_filter($in_footer));
    update_option('in_footer', $in_footer);
}
add_action('load-upload.php', 'save_my_col');

Обратите внимание, что это всего лишь пример, и у меня может быть одна или две опечатки.

ОБНОВЛЕНО:

Мой пример кода должен сохранить массив идентификаторов в таблице параметров под ключом in_footer.

На практике вы можете получить все элементы мультимедиа с пометкой «в нижнем колонтитуле», например, так:

$query = new WP_Query(array('post__in' => get_option('in_footer', array()) ));

if ($query->have_posts()): while ($query->have_posts()): $query->the_post();
?>

<a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>

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