概要
get_post_class
フィルタは、WordPressにおいて投稿記事のクラス名を取得する際に使用されます。このフィルタを使うことで、デフォルトのクラス名にカスタムクラスを追加したり、特定の条件に基づいてクラス名を変更したりすることが可能です。以下のような機能を実装する際に役立つことがよくあります。
- 投稿の種類に応じたスタイリング
- 特定の投稿ステータスに基づくクラスの追加
- 特定のカスタムフィールドの値に基づくクラス操作
- カテゴリーやタグによるスタイリングの変更
- 投稿の公開日によるビジュアルの変更
- コメント数に基づいてスタイルを変更
- 投稿者の情報に基づくクラスの変更
- 特定の条件下におけるクラスの条件付け
構文
apply_filters( 'post_class', $classes, $class, $post_id );
パラメータ
$classes
: 取得された投稿のクラス名の配列$class
: カスタムクラス名(オプション)$post_id
: 投稿のID
戻り値
- 修正されたクラス名の配列
関連する関数
https://refwp.com/?titleonly=1&s=get_post_class
このフィルタを使用可能なバージョン
- WordPress 1.5.0以降
このフィルタが含まれるワードプレスのコアファイルのパス
wp-includes/post-template.php
この関数のアクションでの使用可能性
アクション名 | 使用例 |
---|---|
mu_plugin_loaded | |
registered_post_type | |
plugins_loaded | |
wp_roles_init | |
setup_theme | |
after_setup_theme | |
set_current_user | |
init | |
register_sidebar | |
wp_loaded | |
send_headers | |
parse_query | |
pre_get_posts | |
wp | |
template_redirect | |
get_header | |
wp_head |
サンプルコード
サンプルコード1: 投稿の種類に基づくクラスの追加
function custom_post_class($classes) {
if (is_single() && 'post' === get_post_type()) {
$classes[] = 'single-post';
}
return $classes;
}
add_filter('post_class', 'custom_post_class');
このコードは、単一の投稿が表示されるときにsingle-post
というクラスを追加します。
サンプルコード2: ステータスに基づくクラスの操作
function custom_status_class($classes) {
global $post;
if ($post->post_status === 'draft') {
$classes[] = 'draft-post';
}
return $classes;
}
add_filter('post_class', 'custom_status_class');
このコードは、投稿がドラフト状態である場合にdraft-post
というクラスを追加します。
サンプルコード3: 特定のカスタムフィールド値に基づくクラスの追加
function custom_field_class($classes) {
if (get_post_meta(get_the_ID(), 'featured', true)) {
$classes[] = 'featured-post';
}
return $classes;
}
add_filter('post_class', 'custom_field_class');
このコードは、カスタムフィールドfeatured
が設定されている場合にfeatured-post
というクラスを追加します。
サンプルコード4: コメント数に基づくクラスの追加
function comment_count_class($classes) {
if (get_comments_number() > 5) {
$classes[] = 'popular-post';
}
return $classes;
}
add_filter('post_class', 'comment_count_class');
このコードは、コメント数が5件を超えるとpopular-post
というクラスを追加します。
サンプルコード5: アーカイブページでのクラスの変更
function archive_class($classes) {
if (is_archive()) {
$classes[] = 'archive-view';
}
return $classes;
}
add_filter('post_class', 'archive_class');
このコードは、アーカイブページが表示されるときにarchive-view
というクラスを追加します。
これらのサンプルコードは、WordPressのテーマやプラグインに取り入れることで、さまざまなスタイリングや機能を実装する際に役立ちます。