在send_headers操作中获取Wordpress页面slug

时间:2017-04-18 16:07:40

标签: wordpress header cache-control

我想在特定页面上发送带有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");
        }
    }

1 个答案:

答案 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钩子期间可能需要用来发送的任何其他数据。