我正在开发一个插件,它可以用一个图像改变WordPress中一个特殊页面的全部内容。我的插件代码如下:
<?php
/**
* Plugin Name: Test1234
*/
function set_header_page(){
if( is_page(\'img\') ){
header("Content-Type: image/jpg");
}
}
add_action(\'init\', \'set_header_page\');
function replace_image_content(){
if( is_page(\'img\') ){
$image = plugin_dir_url(__FILE__).\'1404-1.jpg\';
readfile($image);
}
}
add_action(\'wp_loaded\', \'replace_image_content\');
我的问题是:当我添加
if( is_page(\'img\') )
什么都没发生。没有
if( is_page(\'img\') )
我在所有页面中看到我的图像。这在我的代码中显示了一切都取决于“if(is\\u page(\'pagename\'))”。我如何解决它?
注意我试过了if( $post->ID == 11 )
, 也
提前谢谢你。
最合适的回答,由SO网友:Jacob Peattie 整理而成
这两个钩子都太早了is_page()
. WordPress尚未确定要加载的页面,因此无法检查当前页面。尝试template_redirect
对于两者:
/**
* Plugin Name: Test1234
*/
function replace_image_content(){
if ( is_page( \'img\' ) ) {
header( \'Content-Type: image/jpg\' );
$image = plugin_dir_url(__FILE__) . \'1404-1.jpg\';
readfile( $image );
exit;
}
}
add_action( \'template_redirect\', \'replace_image_content\' );