WP_Queryを指定すると固定ページのslugが取れなかった
2024.10.22 09:00
2024.10.22 10:32

WordPressでカスタム投稿タイプを設定し、固定ページにてデータを展開するページ「news」を作ったときに、固定ページのslugがうまく取得できませんでした。
固定ページのスラッグである「news」を取ろうと処理を走らせたところ、デフォルト値の「blog」が入ってきてしまいました。
「<body class=”news〜」が「<body class=”blog〜」になってしまったんですね。
※ちなみにページごとにcssを指定するために、固定ページのslugをbodyのclassに付与しています。付与する方法は、functions.phpに以下のコードを追記して実現しています。
/**
* 固定ページのslugをclassに付与
*/
function my_body_class($classes)
{
if (is_page()) {
$page = get_post();
$classes[] = $page->post_name;
}
return $classes;
}
add_filter('body_class', 'my_body_class');
固定ページではどのようにやっていたかというと、こんな感じです。
<?php
// 最新情報を取得
$paged = get_query_var('paged', 1); // ページ送り用記述
$args = array(
'post_type' => array('post','hogehoge', 'fugafuga'),
'paged' => $paged // ページ送り用記述
);
$wp_query = new WP_Query($args);
?>
<body <?php body_class(); ?>>
これではうまくいきませんでした。
原因はシンプルで、body_class()の前にデータを取得していたからのようです。
これを逆にしてあげればいいんですね。
<body <?php body_class(); ?>>
<?php
// 最新情報を取得
$paged = get_query_var('paged', 1); // ページ送り用記述
$args = array(
'post_type' => array('post','hogehoge', 'fugafuga'),
'paged' => $paged // ページ送り用記述
);
$wp_query = new WP_Query($args);
?>
body_class()を実行した後に最新情報を取得します。
これで無事取得できました!
今回は以上です!