根据找到的示例here 还有其他一些,我试图从特定URL加载非wordpress页面,同时访问wordpress核心。
我有以下代码(看起来像预期的那样工作)连接到template_redirect
措施:
function templateRedirect() {
global $wp;
if ( $wp->query_vars[\'pagename\'] == \'nlm-admin-thumbnail\' ) {
global $wp_query;
// if we have a 404 status
if ($wp_query->is_404) {
// set status of 404 to false
$wp_query->is_404 = false;
$wp_query->is_archive = true;
}
// change the header to 200 OK
header("HTTP/1.1 200 OK");
//load our template
include( dirname( __FILE__ ) . \'/thumbnail.php\' );
exit;
}
}
add_action(\'template_redirect\', \'templateRedirect\');
我的问题是在中执行代码时
thumbnail.php
. 这个文件应该下载网页的缩略图并输出原始图像。nlm admin缩略图slug用作图像标记的src。
当我执行缩略图时。php我一直在获取undefined function some_wp_function()
. 我已经包括了http。php和类http。wp includes文件夹中的php。现在我已经包括了这些,下一个错误是undefined function apply_filters()
.
以这种方式加载php文件是否不允许我访问wp核心,并且应该应用\\u filers()不可访问?
最合适的回答,由SO网友:Milo 整理而成
我经常这样做,在WordPress core中使用函数也没有问题。不过,您可以提前一点挂接并跳过404和标头位。在里面functions.php
:
function wpa88013_parse_query( $wp ){
if ( \'nlm-admin-thumbnail\' == $wp->query_vars[\'pagename\'] ) {
include( dirname( __FILE__ ) . \'/thumbnail.php\' );
exit;
}
}
add_action( \'parse_query\', \'wpa88013_parse_query\' );
以及中的一些示例代码
thumbnail.php
:
<?php
$content = "foo\\n\\nbar";
echo apply_filters( \'the_content\', $content );
$post_id = 1;
echo get_the_post_thumbnail( $post_id );
我刚刚在2012年的主题中测试了这一点,它按预期工作。