kevtrout
  • 0
Эксперт

Как запретить WordPress автоматически применять встроенные стили к изображениям публикации?

  • 0

Мне интересно, как запретить WordPress применять встроенные стили к изображениям, содержащим div в сообщениях.

<div class="img size-medium wp-image-3267 alignright" style="width:190px;">

Изменить: сообщение создается в файле темы с использованием the_content() .

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

Я могу удалить полосу прокрутки, установив переполнение.post с «авто» на «скрытый».

Кто-нибудь знает, как WordPress применяет встроенный стиль? Или как перепрошить? На данный момент я скрыл переполнение.post, но я беспокоюсь, что в будущем это может меня укусить.

Спасибо

Share
  1. Можете ли вы опубликовать код в своей теме, который генерирует эту разметку? Это может быть вызвано самой темой, а не WordPress.

    • 0
  2. WordPress не оборачивает <image /> теги <div> элементами по умолчанию… так что, вероятно, в вашей теме или плагине на вашем сайте есть что-то, что добавляет обертку элемента.

    Я предлагаю переключиться на тему TwentyTen по умолчанию и отключить плагины для сравнения сгенерированной разметки. Затем снова включите плагины по одному и вернитесь к своей теме, чтобы увидеть, какой набор кода добавляет нежелательные <div> блоки.

    • 0
  3. Ссылка на мой оригинальный пост в блоге, предоставленная Джереми, хороша для сайта WordPress с версией 3.2 или более ранней (не уверен насчет версии 3.3, не проверял ее), но недавно я заметил, что она не работает для версии 3.4. У меня не было возможности обновить или написать новый пост об этом, но вот исправленная функция, которая позаботится об этом:

    add_shortcode('wp_caption', 'fixed_img_caption_shortcode');
    add_shortcode('caption', 'fixed_img_caption_shortcode');
    function fixed_img_caption_shortcode($attr, $content = null) {
    
    if ( ! isset( $attr['caption'] ) ) {
        if ( preg_match( '#((?:<a [^>]+>\s*)?<img [^>]+>(?:\s*</a>)?)(.*)#is', $content, $matches ) ) {
            $content = $matches[1];
            $attr['caption'] = trim( $matches[2] );
        }
    }
    
    $output = apply_filters('img_caption_shortcode', '', $attr, $content);
    if ( $output != '' )
        return $output;
    
    extract(shortcode_atts(array(
        'id' => '',
        'align' => 'alignnone',
        'width' => '',
        'caption' => ''
    ), $attr));
    
    if ( 1 > (int) $width || empty($caption) )
        return $content;
    
    if ( $id ) $id = 'id="' . esc_attr($id) . '" ';
    
    return '<div ' . $id . 'class="wp-caption ' . esc_attr($align) . '" style="width: ' . $width . 'px">'
    . do_shortcode( $content ) . '<p class="wp-caption-text">' . $caption . '</p></div>';
    }
    
    • 0
  4. Проверьте следующую функцию:
    (Источник: http://troychaplin.ca/2010/06/remove-automatically-generated-inline-style-on-images-with-caption-in-wordpress/ )

    add_shortcode( 'wp_caption', 'fixed_img_caption_shortcode' );
    add_shortcode( 'caption', 'fixed_img_caption_shortcode' );
    
    function fixed_img_caption_shortcode($attr, $content = null) 
    {
        // Allow plugins/themes to override the default caption template.
        $output = apply_filters('img_caption_shortcode', '', $attr, $content);
    
        if ( $output != '' ) 
            return $output;
    
        extract(shortcode_atts(array(
            'id'=> '',
            'align'    => 'alignnone',
            'width'    => '',
            'caption' => ''), $attr));
    
        if ( 1 > (int) $width || empty($caption) )
            return $content;
    
        if ( $id ) 
            $id = 'id="' . esc_attr($id) . '" ';
    
        return '<div ' . $id . 'class="wp-caption ' . esc_attr($align)
        . '" style="width: ' . ((int) $width) . 'px">'
        . do_shortcode( $content ) . '<p>'
        . $caption . '</p></div>';
    }
    

    Это помогло мне настроить шорткод изображения WP по умолчанию.

    • 0

Оставить ответ

You must login to add an answer.