ここで見つかった例およびその他のいくつかに基づいて、Wordpressコアにアクセスしながら、特定のURLから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-thumbnail slugは画像タグのsrcとして使用されます。
Thumbnail.phpを実行すると、undefined function some_wp_function()
を取得し続けます。 wp-includesフォルダからhttp.phpとclass-http.phpをインクルードしました。これらを含めたので、次のエラーはundefined function apply_filters()
です。
この方法でphpファイルをロードしてもwpコアにアクセスできませんし、apply_filers()にアクセスできないはずですか?
私はこれをかなり定期的に行っており、WordPressコアで関数を使用しても問題ありません。ただし、少し早くフックして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 );
私はちょうど12のテーマでこれをテストしました、そしてそれは予想通りに動作します。