Cập nhật:
Thông tin sử dụng mẫu trang trong WordPress 4.4+
Trong WordPress 4.4, array_intersect_assoc()
đã bị xóa khỏi WP_Theme::get_page_templates()
phương thức.
Xem vé # 13265 và thay đổi # 34995 .
Do đó, chúng tôi có thể thêm thông tin sử dụng mẫu trang, trực tiếp vào danh sách thả xuống mẫu , bằng theme_page_templates
bộ lọc, mà không cần sử dụng javascript hoặc một số thủ thuật bộ đệm đối tượng thông minh được giải thích ở đây bởi @MikeSchinkel hoặc ở đây bởi @gmazzap .
Đây là bản demo ( PHP 5.4+ ):
add_filter( 'theme_page_templates', function( $page_templates, $obj, $post )
{
// Restrict to the post.php loading
if( ! did_action( 'load-post.php' ) )
return $page_templates;
foreach( (array) $page_templates as $key => $template )
{
$posts = get_posts(
[
'post_type' => 'any',
'post_status' => 'any',
'posts_per_page' => 10,
'fields' => 'ids',
'meta_query' => [
[
'key' => '_wp_page_template',
'value' => $key,
'compare' => '=',
]
]
]
);
$count = count( $posts );
// Add the count to the template name in the dropdown. Use 10+ for >= 10
$page_templates[$key] = sprintf(
'%s (%s)',
$template,
$count >= 10 ? '10+' : $count
);
}
return $page_templates;
}, 10, 3 );
Thí dụ:
Ở đây chúng ta có thể thấy nó trông như thế nào, với thông tin đếm sử dụng được thêm vào tên mẫu:
Hy vọng bạn có thể điều chỉnh điều này theo nhu cầu của bạn!
SELECT p.post_title as PostTitle, m.meta_value as Template FROM `wp_postmeta` as m join `wp_posts` as p ON p.ID = m.post_id where ((p.post_type = 'page') OR (p.post_type = 'post')) AND (m.meta_key = '_wp_page_template');
. Đầu vào của bạn là vô giá để chỉ ra nơi các trường cơ sở dữ liệu chính xác.