• Здравствуйте. Подскажите, пожалуйста, как можно настроить отображение автоматически установленной (через свой код) миниатюры а админке на странице редактирования поста в блоке Изображение записи?
    На данный момент там отображаются только установленные вручную.

    Аналогов кода, который использую, в сети много, все разные, но суть одна: проверяет, есть ли миниатюра, если нет — берется первая картинка из записи, если пост без картинок — ставится заглушка по умолчанию. Все работает прекрасно, но есть проблема: а самой админке никоим образом не видно, что миниатюра записи благополучно установлена, как следствие, также отсутствует иконка у записи в общем списке, что создает некоторые неудобства.
    Пример кода:

    function first_post_image() {
      global $post, $posts;
      $first_img = '';
      ob_start();
      ob_end_clean();
      $output = preg_match_all('/<img.+src=[\'"]([^\'"]+)[\'"].*>/i', $post->post_content, $matches);
      $first_img = $matches [1] [0];
      if(empty($first_img)){
       $first_img = "/wp-content/themes/mytheme/img/default.jpg";
      }
      return $first_img;
    }

    или такой:

    function get_fbimage() {
      if ((function_exists('has_post_thumbnail')) && (has_post_thumbnail())) {
      $src = wp_get_attachment_image_src( get_post_thumbnail_id($post->ID), '', '' );
      $fbimage = $src[0];
      } else {
        global $post, $posts;
        $fbimage = '';
        $output = preg_match_all('/<img.+src=[\'"]([^\'"]+)[\'"].*>/i',
        $post->post_content, $matches);
        $fbimage = $matches [1] [0];
      }
      if(empty($fbimage)) {
    	
        $fbimage = "/wp-content/themes/mytheme/img/default.jpg";
      }
      return $fbimage;
    }

    Еще момент. Есть также код, с которым в админке нет этой проблемы, но с этим кодом не ставится дефолтная заглушка. Может быть, подскажете, как его видоизменить, чтобы не использовать те, что привёл в примерах выше? Сам код:

    function autoset_featured() {  
        global $post;  
        $already_has_thumb = has_post_thumbnail($post->ID);
        if (!$already_has_thumb) {
        $attached_image = get_children( "post_parent=$post->ID&post_type=attachment&post_mime_type=image&numberposts=1" );
        if ($attached_image) {
        foreach ($attached_image as $attachment_id => $attachment) {
        set_post_thumbnail($post->ID, $attachment_id);
    }}}}
    add_action('future_to_publish', 'autoset_featured');
    add_action('the_post', 'autoset_featured');
    add_action('save_post', 'autoset_featured');
    add_action('draft_to_publish', 'autoset_featured');
    add_action('new_to_publish', 'autoset_featured');
    add_action('pending_to_publish', 'autoset_featured');

    P.S. Модераторам — чтобы не апать старую тему — её можно закрыть, все коды нашёл.

Просмотр 5 ответов — с 16 по 20 (всего 20)
  • Я подредактировал свой предыдущий пост.

    если заглушку насильно через set_post_thumbnail установить как изображение записи — то она будет отображаться и без дополнительных хуков.

    Автор DS

    (@dosolnce)

    @sevlad, да, спасибо.

    @flector, без понятия как, не получилось комбинировать пока.

    ok, вот вам простейшая заглушка для админки:

    
    function wph_thumbnail_html($output, $post_id, $thumbnail_id = ""){
    	if (!$thumbnail_id) :
    		$output .= '<img src="ссылка на картинку-заглушку" />';
    	endif;
    	return $output;
    }
    add_filter('admin_post_thumbnail_html', 'wph_thumbnail_html', 10, 3); 
    
    Автор DS

    (@dosolnce)

    @flector, спасибо, работает.

Просмотр 5 ответов — с 16 по 20 (всего 20)
  • Тема «Отображение миниатюр в админке» закрыта для новых ответов.