我正在开发一个插件,可以为新闻发布创建自定义帖子类型。目的是让用户能够轻松地以标准新闻稿格式创建新闻稿。例如:
FOR IMMEDIATE RELEASE
此处为标题
City, State (Month Year) - 第1款
第2段
等等。。。
联系人:
公关代表姓名
职务
公司
电话:#
传真:#
# # #
该插件有用于联系信息的自定义字段,自动在“立即发布”等前面加上前缀。整个想法是,您只需编写发布内容,其他一切都会为您处理好。
我正在尝试为这种帖子类型创建一个自定义RSS提要,它将使用这些自定义字段并正确显示所有内容。除了我注意到的一个bug之外,它基本上都能正常工作。
如果在同一天发布了多个新闻稿,则只有最近的新闻稿才会显示日期。其余部分应显示日期的地方为空。下面是我的feed代码:(修改后的/wp-includes/feed-rss2.php版本)
<?php
header(\'Content-Type: \' . feed_content_type(\'rss-http\') . \'; charset=\' . get_option(\'blog_charset\'), true);
$more = 1;
echo \'<?xml version="1.0" encoding="\'.get_option(\'blog_charset\').\'"?\'.\'>\'; ?>
<rss version="2.0"
xmlns:content="http://purl.org/rss/1.0/modules/content/"
xmlns:wfw="http://wellformedweb.org/CommentAPI/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:atom="http://www.w3.org/2005/Atom"
xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
<?php do_action(\'rss2_ns\'); ?>
>
<channel>
<title><?php bloginfo_rss(\'name\'); ?></title>
<atom:link href="<?php self_link(); ?>" rel="self" type="application/rss+xml" />
<link><?php bloginfo_rss(\'url\') ?></link>
<description><?php bloginfo_rss("description") ?></description>
<lastBuildDate><?php echo mysql2date(\'D, d M Y H:i:s +0000\', get_lastpostmodified(\'GMT\'), false); ?></lastBuildDate>
<language><?php bloginfo_rss( \'language\' ); ?></language>
<sy:updatePeriod><?php echo apply_filters( \'rss_update_period\', \'hourly\' ); ?></sy:updatePeriod>
<sy:updateFrequency><?php echo apply_filters( \'rss_update_frequency\', \'1\' ); ?></sy:updateFrequency>
<?php do_action(\'rss2_head\'); ?>
<?php
while( have_posts()) : the_post();
$pr_option = get_option(\'bacpr_option\');
$pr_meta = get_post_custom();
$pr_date_format = ($pr_option["date_format"] != null && $pr_option["date_format"] != "") ? $pr_option["date_format"]:"F j, Y";
?>
<item>
<title><?php the_title_rss() ?></title>
<link><?php the_permalink_rss() ?></link>
<pubDate><?php echo mysql2date(\'D, d M Y H:i:s +0000\', get_post_time(\'Y-m-d H:i:s\', true), false); ?></pubDate>
<?php the_category_rss(\'rss2\') ?>
<guid isPermaLink="false"><?php the_guid(); ?></guid>
<?php
$content = "<p><strong>FOR IMMEDIATE RELEASE</strong></p><h1>".the_title_rss()."</h1>";
if ($pr_meta["insert_summary"][0] == 1) {
$content .= "<p><em>".$pr_meta["summary"][0]."</em></p>";
}
ob_start();
the_content(\'rss2\');
$original_content = ob_get_contents();
ob_end_clean();
$startpos = strpos($original_content, "<p");
$endpos = strpos($original_content, ">", $startpos);
$new_content = substr($original_content, 0, $endpos+1);
$new_content .= "<strong>".$pr_meta[\'location\'][0]." ".the_date($pr_date_format, \'(\', \')\', false)." -</strong> ";
$new_content .= substr($original_content, $endpos+1);
$content .= $new_content;
$content .= "<p>Contact:<br/>";
$content .= ($pr_meta["signature1"][0] != null || $pr_meta["signature1"][0] != "") ? $pr_meta["signature1"][0]."<br/>":"";
$content .= ($pr_meta["signature2"][0] != null || $pr_meta["signature2"][0] != "") ? $pr_meta["signature2"][0]."<br/>":"";
$content .= ($pr_meta["signature3"][0] != null || $pr_meta["signature3"][0] != "") ? $pr_meta["signature3"][0]."<br/>":"";
$content .= ($pr_meta["email"][0] != null || $pr_meta["email"][0] != "") ? "<a href=\'mailto:".$pr_meta["email"][0]."\'>".$pr_meta["email"][0]."</a>"."<br/>":"";
$content .= ($pr_meta["address1"][0] != null || $pr_meta["address1"][0] != "") ? $pr_meta["address1"][0]."<br/>":"";
$content .= ($pr_meta["address2"][0] != null || $pr_meta["address2"][0] != "") ? $pr_meta["address2"][0]."<br/>":"";
$content .= ($pr_meta["address3"][0] != null || $pr_meta["address3"][0] != "") ? $pr_meta["address3"][0]."<br/>":"";
$content .= ($pr_meta["phone"][0] != null || $pr_meta["phone"][0] != "") ? "Phone: ".$pr_meta["phone"][0]."<br/>":"";
$content .= ($pr_meta["fax"][0] != null || $pr_meta["fax"][0] != "") ? "Fax: ".$pr_meta["fax"][0]."<br/>":"";
$content .= ($pr_meta["web"][0] != null || $pr_meta["web"][0] != "") ? "<a href=\'".$pr_meta["web"][0]."\'>".$pr_meta["web"][0]."</a>"."<br/>":"";
$content .= "</p><p><strong>";
$content .= ($pr_option["ends_with"] == 2) ? "ENDS":"# # #";
$content .= "</strong></p>";
?>
<content:encoded><![CDATA[<?php echo $content; ?>]]></content:encoded>
<?php rss_enclosure(); ?>
<?php do_action(\'rss2_item\'); ?>
</item>
<?php endwhile; ?>
</channel>
</rss>
基本上我不知所措,我想我应该向你们寻求帮助。提前感谢所有在这里帮助我的人。