参考号:how to get page id of a page using page slug
我检查了上述答案,但当我将任何代码粘贴到子主题的函数php文件中时,它没有改变任何内容。以下是我使用的代码:
<?php
// For this theme only - not the standard way of enqueing styles as per here:
// https://wordpress.org/support/topic/adding-child-theme?replies=3
function smallblog_child_scripts() {
wp_enqueue_style( \'smallblog-child\', get_stylesheet_directory_uri() . \'/style.css\' );
}
add_action( \'wp_enqueue_scripts\', \'smallblog_child_scripts\', 20 );
function get_id_by_slug($page_slug) {
$page = get_page_by_path($page_slug);
if ($page) {
return $page->ID;
} else {
return null;
}
}
?>
页面id仍仅显示。
例如,不显示
class="page page-id-53 page-template-default
我希望它显示:
class="page contact page-template-default //indicating that\'s the contact page
谢谢你的帮助!
最合适的回答,由SO网友:Howdy_McGee 整理而成
我相信你要找的钩子是body_class
或post_class
滤器这些过滤器将允许您删除类或将类推送到一个数组中,该数组将在body
分别标记或后标记。要添加post-slug,我们可以执行以下操作:
/**
* Add, Remove, and Modify body classes
* @note http://wordpress.stackexchange.com/a/236106/7355
*
* @param Array $classes
*
* @return Array $classes
*/
function theme_body_classes( $classes ) {
global $post;
if( is_object( $post ) ) {
$classes[] = $post->post_name;
$classes[] = "{$post->post_type}-{$post->post_name}";
}
return $classes;
}
add_filter( \'body_class\', \'theme_body_classes\' );