在WordPress中获取当前页面名称

Sud*_*war 2 wordpress

在WordPress header.php文件中,有没有办法减少这个:

<?php if (is_page('about')): ?>
<script type="text/javascript">var page = "about";</script>
<?php endif ?>

<?php if (is_page('contact')): ?>
<script type="text/javascript">var page = "contact";</script>
<?php endif ?>

<?php if (is_page('gallery')): ?>
<script type="text/javascript">var page = "gallery";</script>
<?php endif ?>
Run Code Online (Sandbox Code Playgroud)

<script type="text/javascript">
var page = "<?php echo get_current_page() ?>";
</script>
Run Code Online (Sandbox Code Playgroud)

Luk*_*son 5

好的,这里的一点点就是is_page()如果包含的字符串是Post Title或Post Slug(WordPress Codex),函数将返回TRUE .所以我将提供两种解决方案,您可以选择最适合您的解决方案.

<script type="text/javascript">
<?php $pageDetails = get_page(); ?>
var page_title = "<?php echo str_replace( '"' , '\"' , $pageDetails->post_title ); ?>";
var page_slug  = "<?php echo str_replace( '"' , '\"' , $pageDetails->post_name  ); ?>";
</script>
Run Code Online (Sandbox Code Playgroud)

我包括该str_replace()位以确保包含引号的任何页面名称不会破坏您的Javascript.

并根据David M的评论进行调整,使用JSON使事情变得更安全......

<script type="text/javascript">
<?php $pageDetails = get_page(); ?>
var page_title = <?php echo json_encode( $pageDetails->post_title ); ?>;
var page_slug  = <?php echo json_encode( $pageDetails->post_name  ); ?>;
</script>
Run Code Online (Sandbox Code Playgroud)