Я пытаюсь создать полностью настраиваемый фид из моего блога на WordPress, чтобы он мог поступать в систему управления контентом, использующую NewsML. Вы можете узнать о NewsML и найти валидатор NewsML здесь .
Мой подход заключается в создании шаблона страницы WP, который создает XML, а не HTML, описанный парнем по имени Yoast (Google егоЯ не могу опубликовать слишком много ссылок, потому что я новичок здесь).Однако, кажется, ничто не может удовлетворить валидатор NewsML.Есть ли у кого-нибудь идеи по созданию лент NewsML и / или опыт работы с WordPress?Кажется, что NewsML чрезвычайно сложен и сбивает меня с толку везде, где я поворачиваюсь.
Вот шаблон, который я придумал для создания канала.Не стесняйтесь попробовать, если хотите.
<?php
$numposts = 10;
function yoast_rss_date( $timestamp = null ) {
$timestamp = ($timestamp==null) ? time() : $timestamp;
echo date(DATE_RSS, $timestamp);
}
function yoast_rss_text_limit($string, $length, $replacer = '...') {
$string = strip_tags($string);
if(strlen($string) > $length)
return (preg_match('/^(.*)\W.*$/', substr($string, 0, $length+1), $matches) ? $matches[1] : substr($string, 0, $length)) . $replacer;
return $string;
}
$posts = query_posts('showposts='.$numposts);
$lastpost = $numposts - 1;
header("Content-Type: application/rss+xml; charset=UTF-8");
echo '<?xml version="1.0"?>';
?>
<NewsML>
<Catalog Href="http://www.iptc.org/std/catalog/catalog.IptcMasterCatalog.xml"/>
<NewsEnvelope>
<DateAndTime><?php echo mysql2date('Ymd', get_lastpostmodified('GMT'), false); ?>T<?php echo mysql2date('His', get_lastpostmodified('GMT'), false); ?></DateAndTime>
<NewsService FormalName="Thumbnail" link-url="http://example.com">
http://example.com/images/example.gif
</NewsService>
</NewsEnvelope>
<?php foreach ($posts as $post) { ?>
<?php setup_postdata($post); ?>
<NewsItem LinkType="normal">
<Identification>
<NewsIdentifier>
<ProviderId><?php the_author(); ?></ProviderId>
</NewsIdentifier>
</Identification>
<NewsManagement>
<NewsItemType FormalName="News"/>
<FirstCreated><?php the_time(Ymd); ?>T<?php the_time(His); ?></FirstCreated>
<ThisRevisionCreated><?php the_modified_time(Ymd); ?>T<?php the_modified_time(Ymd); ?></ThisRevisionCreated>
<Status FormalName="Usable"/>
</NewsManagement>
<NewsComponent Duid="<?php echo get_permalink($post->ID); ?>copyright" Essential="no" EquivalentsList="no">
<NewsLines>
<CopyrightLine>Placeholding</CopyrightLine>
</NewsLines>
<NewsComponent Duid="<?php echo get_permalink($post->ID); ?>">
<DateLine><?php the_time(Ymd); ?>T<?php the_time(His); ?></DateLine>
<Author><?php the_author(); ?></Author>
<NewsComponent>
<Role FormalName="Main"/>
<NewsLines>
<HeadLine><?php echo get_the_title($post->ID); ?></HeadLine>
<SlugLine>
<?php the_excerpt(); ?>
</SlugLine>
<MoreLink>
<?php echo get_permalink($post->ID); ?>
</MoreLink>
</NewsLines>
<ContentItem link-url="<?php echo get_permalink($post->ID); ?>">
<DataContent>
<nitf>
<body>
<body.head>
<hedline>
<hl1><?php echo get_the_title($post->ID); ?></hl1>
</hedline>
</body.head>
<body.content>
<?php echo apply_filters('the_content',$post->post_content); ?>
</body.content>
</body>
</nitf>
</DataContent>
</ContentItem>
</NewsComponent>
</NewsComponent>
</NewsComponent>
</NewsItem>
<?php } ?>
</NewsML>