【发布时间】:2021-07-27 13:28:14
【问题描述】:
我已经为我的 wordpress 页面创建了一个自定义 rss/xml 提要来列出某些工作 - 它可以工作,除了内容类型会自动更改并且非常随意地从 rss/xml 更改为 text/html,这使得无法获取正确进给。我真的不知道为什么或如何重现该问题。
代码有问题吗?我不这么认为——可能是由于服务器的错误配置或类似的原因。
代码如下:
class KIE_XML_Feed{
public function __construct()
{
add_action( 'init', array( $this, 'kie_add_xml_job_feeds' ) );
add_filter( 'feed_content_type', array( $this, 'kie_feed_type'), 10, 2 );
}
function kie_add_xml_job_feeds() {
add_feed( 'joblift', array( $this, 'kie_render_joblift_job_feed' ) );
}
function kie_feed_type( $content_type, $type ) {
if ( 'joblift' === $type ) {
return feed_content_type( 'rss' );
}
return $content_type;
}
/*
*
* Joblift
*
*/
function kie_render_joblift_job_feed() {
header( 'Content-Type: application/rss+xml ; charset=' . get_option( 'blog_charset' ), true );
echo '<?xml version="1.0" encoding="' . get_option( 'blog_charset' ) . '"?' . '>';
// Start feed
?><feed xmlns="http://www.w3.org/2005/Atom"><?php
// Query
$job_query = new WP_Query( [
'post_type' => 'jobs',
'posts_per_page' => -1,
'meta_query' => array(
array(
'key' => 'kie_xml_feed_joblift',
'value' => '1',
'compare' => '=',
'type' => 'numeric'
)
)
]);
// Loop
if ( $job_query->have_posts() ) {
while ( $job_query->have_posts() ) {
$job_query->the_post();
get_template_part( 'partials/feeds/joblift' );
}
}
// End feed
?></feed><?php
// Reset
wp_reset_postdata();
}
}
提前谢谢你。
【问题讨论】:
-
见this comment - 你应该使用
feed_content_type钩子或函数header(),但不能同时使用.. -
谢谢,我已经解决了,但问题仍然存在。
-
您怎么知道提要的内容类型有时是 HTML?应用修复后,您是否尝试过清除缓存?
-
是的,我确实清除了缓存 - 这是给你的屏幕ibb.co/NsM6XBd
-
感谢您的回答,我想我已经解决了。是的,指定的提要无效,但这不是问题所在。 Wordpress 显然在不同的 URL 下提供创建的提要,即以下一个 kennt-ihr-einen.de/feed/joblift - 所以,为了简单起见 - 我忘记了 URL 中的 /feed/
标签: php xml wordpress rss feed