WordPressで新しいページを作成するときに、使用するテンプレートをテーマから(インターフェースの右側にあるドロップダウンリストから)指定することもできます。
削除できるように、使用可能なテンプレートのうちどれが未使用かを確認する必要があります。
これはどのように行われますか。
WPのバージョンは4.2.2です
1つのページ用に選択されたページテンプレートを含むメタフィールド_wp_page_template
の値を利用可能なページテンプレートと比較する必要があります。
このためには、使用されているテンプレートの配列を作成する必要があります。これは、すべてのページでテンプレートが使用されるようにするためです。
一意の値を取得するにはarray_unique
を使用してください。
次に示すように、利用可能なページテンプレートを取得する必要があります。
大事なことを言い忘れましたが、array_diff
を使用して使用可能なテンプレートと使用可能なテンプレートの配列を比較すると、後で未使用のテンプレートが得られます。
更新:
WordPress 4.4では、array_intersect_assoc()
がWP_Theme::get_page_templates()
メソッドから削除されました。
チケット #13265 および変更セット #34995 を参照してください。
したがって、JavaScriptを使用せずに、theme_page_templates
フィルターを使用してtemplate dropdownにページテンプレートの使用情報を直接追加できます ここでは@MikeSchinkelによる または ここでは@gmazzapによる 。
デモ(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 );
例:
ここでは、テンプレート名に使用カウント情報が追加されて、どのように見えるかを確認できます。
これをニーズに合わせて調整できることを願っています!