显示自定义数据而不是404

时间:2012-03-01 作者:faulty

我目前正在开发一个插件,在我的wordpress网站上显示一些自定义数据。

例如,我有一个名为abc. 如果访客试图访问localhost/wordpress/abc, 它应该以编程方式显示代码中的数据。但是如果访问了一个有效的post url,如localhost/wordpress/existing-post 它仍应显示帖子。

我目前正在研究使用template_redirect 行动和redirect_canonical 过滤,但解决方案感觉不正确。此外,我正在考虑使用自定义帖子类型,但不确定它是否合适。

我尝试为每个数据创建一个帖子,并使用the_content 筛选以显示数据的详细信息,但此方法生成的帖子太多,因此我正在寻找更干净的替代方法。

我拥有的数据是随着时间的推移在后台生成的。因此,未来它将增长到数千或数万。

非常感谢。

编辑:

我领养了404 Tools plugin 托肖。这些是我修改和使用的重要部分

add_filter( \'404_template\', \'myplugin_display_data\' );
public function myplugin_display_data( $template )
{
    status_header(200);
    new self;
    //For now forward everything to my own page for testing purpose
    return dirname(__FILE__) . \'/myplugin-page.php\';
}
现在我注意到输出将error404 在body的CSS类的一部分中,它仍然像404一样呈现输出。我该怎么做postpage 无需手动重写变量$wp_query, e、 g.正在进行$wp_query->is_page = true;

我正在寻找一种优雅的方式来做到这一点。

编辑:我已添加

    global $wp_query;
    $wp_query->parse_query("/");
之后status_header, 现在页面按我想要的方式显示。谢谢

1 个回复
最合适的回答,由SO网友:fuxia 整理而成

你可以看看我的404 Tools plugin. 我在上运行筛选器\'404_template\' 那里filter函数将模板URL作为参数获取,并且仍然可以发送HTTP头。

您也可以连接到此过滤器,准备一些可能需要稍后打印的数据,更改模板(例如:到single.php) 并添加do_action( \'print_my_custom_data\' ); 到您的single.php.

结束

相关推荐

转到WWW版本的站点时WP_REDIRECT不起作用

当登录的访问者转到时,以下功能可以正常工作http://sitename.com, 将他们带到网站主页。登录后,访问者可以访问http://www.sitename.com, 但是,它们被错误地重定向到http://sitename.com/splashpage. 有人知道这是什么原因吗?我已尝试切换网站设置以使用http://www.sitename.com 作为WordPress和站点地址的URL,但这只是扭转了问题,因此当登录用户转到http://sitename.com.// REDIRECT U