如何为URL创建特定的处理程序?

时间:2021-09-18 作者:DAB

我想创建一个使用url的图像生成器,如:/图像生成器?a=1(&a);b=2(&A);c=3

图像生成器将是动态的,并根据参数创建图像。它还将输出图像。因此将不会有HTML,标头将返回content-type: image/jpg.

实现这一目标的最佳方式是什么?我考虑过创建自定义路线,但显然你不应该这样做。我是否需要创建自定义类型和帖子,并为该类型设置自定义处理程序?我怎样才能直接编写代码并跳过所有模板?

1 个回复
SO网友:Sally CJ

您可以使用parse_request hook. 例如:

add_action( \'parse_request\', function ( $wp ) {
    // Run your actions only if the current request path is exactly \'image-generator\'
    // as in https://example.com/image-generator if the site URL is https://example.com
    if ( \'image-generator\' === $wp->request ) {
        $a   = $_GET[\'a\'];
        $b   = $_GET[\'b\'];
        $etc = \'etc\';
        // ... your code here.

        // And then send the HTTP status and also the Content-Type headers.
        status_header( 200 );
        header( \'Content-Type: image/jpeg\' );
        // ... echo your image.

        exit;
    }
} );
请注意status_header() 是用于发送HTTP状态标头的WordPress函数。请参见documentation 了解更多详细信息。

相关推荐

Debugging WP routing

对于一些帖子,我看到404页,即使存在帖子,在WP中使用永久链接决定需要呈现什么对象的位置在哪里?谢谢