Поддержка Проблемы и решения Ручная установка thumbnail для поста, мимо API wp

  • Переношу с другого движка на ВП сайт.

    Написал скрипт. Скрипт читает «соответствующие» поля из БД сторонней CMS и записывает в БД wordpress.

    Подскажите как вручную мимо API wp установить миниатюру для записи.
    у меня есть картинка в папке /wp-content/uploads/2010/12/114.jpg

    Есть запись в БД (ID = 24), картинка зарегистрирована как attachment для какого-то поста (parent = 23)

    Запись и медиафайл видятся в админке wp. Хочу установить эту картинку в виде миниатюры 150*150.

    В настройке темы прописано:

    add_theme_support('post-thumbnails');
    set_post_thumbnail_size(150, 150, true );

    Т.е. вручную если в админке указывать, то все хорошо.

    Я вручную создаю копию картинки /wp-content/uploads/2010/12/114-150×150.jpg нужного размера.

    Функция the_post_thumbnail(); выводит только указанные через админку картинки.

    Я смотрел таблицу prefix_postmeta, там создаются записи для миниатюр, но общий принцип создания такой записи что-то не смог понять, чтобы работало.

    Какого рода запись в таблицу prefix_postmeta нужно для каждого поста добавлять, чтобы миниатюра была связана с постом?

Просмотр 2 ответов — с 1 по 2 (всего 2)
  • а что мешает использовать API ?
    http://codex.wordpress.org/Integrating_WordPress_with_Your_Website
    ну а судя по исходным кодам превьюха добывается из поля
    _thumbnail_id значит надо туда его положить
    смотри post-thumbnail-template.php

    а что мешает использовать API ?

    Я написал в 1 файл скрипт экспорта, зачем мне подключать wp к нему, он сам по себе свое дело хорошо делает. Можно это рассматривать как сторонний скрипт для работы с БД, просто конкретика с ВП связана.

    Не сумев сделать такое, взял из wp 3.1 функцию (это уже с подключенным ВП конечно только)

    /**
     * Sets a post thumbnail.
     *
     * @since 3.1.0
     *
     * @param int|object $post Post ID or object where thumbnail should be attached.
     * @param int $thumbnail_id Thumbnail to attach.
     * @return bool True on success, false on failure.
     */
    function set_post_thumbnail( $post, $thumbnail_id ) {
    	$post = get_post( $post );
    	$thumbnail_id = absint( $thumbnail_id );
    	if ( $post && $thumbnail_id && get_post( $thumbnail_id ) ) {
    		$thumbnail_html = wp_get_attachment_image( $thumbnail_id, 'thumbnail' );
    		if ( ! empty( $thumbnail_html ) ) {
    			update_post_meta( $post->ID, '_thumbnail_id', $thumbnail_id );
    			return true;
    		}
    	}
    	return false;
    }

    Эта штука умеет привязать атачмент (оригинальный размер) к записи в виде миниатюры, но используется оригинальный атачмент, а не уменьшенная нужная копия атачмента.

    Помучался сегодня с этим, так и не сделал первоначальную задачу. Все переделал на атачменты оригинальные.

    Но все равно вопрос остался нерешенным, хотя уже не актуальный для меня.

Просмотр 2 ответов — с 1 по 2 (всего 2)
  • Тема «Ручная установка thumbnail для поста, мимо API wp» закрыта для новых ответов.