Как добавить опубликованное изображение в тег элемента RSS?

Я могу добавить сообщение, помещенное в RSS-канал, следующим образом:

function insertThumbnailRSS($content) {
    global $post;
    if(has_post_thumbnail($post->ID)){
        $content = ''.get_the_post_thumbnail($post->ID, 'thumbnail', array('alt' => get_the_title(), 'title' => get_the_title(), 'style' => 'float:right;')).''.$content;
    }
    return $content;
}
add_filter('the_excerpt_rss', 'insertThumbnailRSS');
add_filter('the_content_feed', 'insertThumbnailRSS');

Однако, изучив XML, сгенерированный для RSS-канала, я заметил, что он добавляет изображение в тег элемента описания XML.

Как я могу вставить опубликованное изображение в свой собственный тег элемента питания RSS, скажем, «образ», а не просто вставлять его с содержимым сообщения?

6 голосов | спросил Michael Ecklund 24 J000000Tuesday12 2012, 19:00:26

2 ответа


8

Вы можете сделать это, добавив действие к hook 'rss2_item' следующим образом:

add_action('rss2_item', function(){
  global $post;

  $output = '';
  $thumbnail_ID = get_post_thumbnail_id( $post->ID );
  $thumbnail = wp_get_attachment_image_src($thumbnail_ID, 'thumbnail');
  $output .= '<post-thumbnail>';
    $output .= '<url>'. $thumbnail[0] .'</url>';
    $output .= '<width>'. $thumbnail[1] .'</width>';
    $output .= '<height>'. $thumbnail[2] .'</height>';
    $output .= '</post-thumbnail>';

  echo $output;
});
ответил codekipple 30 J000000Monday12 2012, 20:40:48
5

Создание отличного ответа на код kkkipple , вот моя модифицированная реализация, в которой используется действительный элемент RSS RSS-кода media:content ( spec ) и проверку наличия эскиза /изображения:

function dn_add_rss_image() {
    global $post;

    $output = '';
    if ( has_post_thumbnail( $post->ID ) ) {
        $thumbnail_ID = get_post_thumbnail_id( $post->ID );
        $thumbnail = wp_get_attachment_image_src( $thumbnail_ID, 'thumbnail' );

        $output .= '<media:content xmlns:media="http://search.yahoo.com/mrss/" medium="image" type="image/jpeg"';
        $output .= ' url="'. $thumbnail[0] .'"';
        $output .= ' width="'. $thumbnail[1] .'"';
        $output .= ' height="'. $thumbnail[2] .'"';
        $output .= ' />';
    }
    echo $output;
}
add_action( 'rss2_item', 'dn_add_rss_image' );

Примечание. Включите здесь атрибут xmlns, чтобы проверить его. Первоначальная установка WordPress не включает это объявление пространства имен, и, хотя вы можете его изменить, так могут быть и другие темы /плагины.

Более подробная информация о других атрибутах и ​​т. д. представлена ​​ в ответе, отличном от WordPress, здесь .

Это интегрируется с новостным бюллетенем MailChimp в RSS.

ответил D_N 24 PM000000110000005031 2017, 23:28:50

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132