我想在特定页面上发送带有send_headers操作的自定义标头(禁用缓存),但无法访问页面slug。 $ post变量似乎是空的。代码如下。
add_action('send_headers', 'add_header_came');
function add_header_came() {
global $post;
if($post->post_name == 'page1' || $post->post_name == 'page2') {
header("Cache-Control: no-cache, must-revalidate");
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT");
}
}
答案 0 :(得分:1)
在这个钩子的时候,我们还没有$ post对象。
您可以通过从URL获取提示来执行某些操作,如下所示:
$path_slug = pathinfo($_SERVER['REQUEST_URI'])['filename'];
此外,您甚至可以查询WP数据库以获取更多信息,如:
if($path_slug != '' ):
$args=array(
'name' => $path_slug,
'post_type' => array('post','page'),
'post_status' => 'publish',
'posts_per_page' => 1
);
$post = get_posts( $args);
现在你有$ post对象来提取你在send_headers
钩子期间可能需要用来发送的任何其他数据。