条件标记在WordPress插件中不起作用

时间:2019-05-08 作者:Ali Bonyadi

我正在开发一个插件,它可以用一个图像改变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 ), 也

提前谢谢你。

1 个回复
最合适的回答,由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\' );