2024年07月01日
WP関数:get_ancestors()
この関数の説明
WP関数の get_ancestors() は、固定ページIDか、投稿のカテゴリIDを指定して、先祖のID配列を取得する関数です。
関数
get_ancestors( $object_id, $object_type, $resource_type )
パラメータ
$object_id(整数)(必須)
固定ページIDか、投稿のカテゴリIDを指定します。
$object_type(文字列)(必須)
オブジェクトの種類を指定します。
'page' :固定ページの祖先を取得する時に指定
'category' :投稿のカテゴリの祖先を取得する時に指定
$resource_type(文字列) (オプション)
カスタム投稿の祖先IDの配列を取得する時に指定します。初期値: なし
'post_type':カスタム投稿タイプ
'taxonomy': カスタムタクソノミー
戻り値
祖先オブジェクトの ID の配列を返します。
配列の並びは階層の下から上の順です。
事例
①投稿ページのパンくず処理
<?php if(is_single()):?> <?php $icon_home='<i class="fas fa-home"></i> '; // Font Awesomeのホームアイコンの設定 $icon_cat ='<i class="far fa-clone"></i> '; // Font Awesomeのカテゴリアイコンの設定 $icon_file ='<i class="far fa-file"></i> '; // Font Awesomeのファイルアイコンの設定 $title = get_the_title();// タイトルの取得 $cat = get_the_category();// カテゴリ情報の取得 $cat_id = $cat[0]->cat_ID;// カテゴリIDの取得 $cat_array = get_ancestors( $cat_id , 'category' ); // 先祖のカテゴリIDをarrayで取得 $cat_array = array_reverse($cat_array); // カテゴリIDの順番を逆にする ?> <a href='<?php echo esc_url(home_url()); ?>'><?php echo $icon_home; ?>HOME</a> / <!-- ホームリンクの表示--> <?php foreach($cat_array as $cat):?><!-- カテゴリの先祖リンクの表示--> <a href='<?php echo esc_url(get_category_link($cat));?>'><?php echo $icon_cat.esc_html(get_cat_name($cat));?></a> / <?php endforeach;?> <a href='<?php echo esc_url(get_category_link($cat_id));?>'><?php echo $icon_cat.esc_html(get_cat_name($cat_id));?></a> / <!-- 現在カテゴリの表示 --> <?php echo $icon_file.esc_html($title);?><!-- 文書名の表示--> <?php endif;?>
■10行目でカテゴリの先祖を抽出し、11行目でその順番を逆にしています。
■上記は下記にようなパンくずを表示します。
上記はこの投稿のカテゴリが[WordPress関数]で更にこのカテゴリに親があった場合です。
■13~18行目でURLechoする際にエスケープ処理をしています。
②固定ページのパンくず処理
<?php if(is_page()):?> <?php $icon_home='<i class="fas fa-home"></i> '; // Font Awesomeのホームアイコンの設定 $icon_cat ='<i class="far fa-clone"></i> '; // Font Awesomeのカテゴリアイコンの設定 $icon_file ='<i class="far fa-file"></i> '; // Font Awesomeのファイルアイコンの設定 $title = get_the_title(); // 現在文書のタイトルの取得 $id = get_the_ID(); // 固定ページIDの取得 $page_array = get_ancestors( $id , 'page' ); // 先祖のIDをarrayで取得 $page_array = array_reverse($page_array); // カテゴリIDの順番を逆にする ?> <a href='<?php echo esc_url(home_url()); ?>'><?php echo $icon_home;?>HOME</a> / <!-- ホームリンクの表示--> <?php foreach($page_array as $page_id):?> <!-- ページの先祖リンクの表示--> <a href='<?php echo esc_url(get_permalink($page_id));?>'><?php echo $icon_cat.esc_html(get_the_title($page_id));?></a> / <?php endforeach;?> <?php echo $icon_file.esc_html($title);?><!-- 文書名の表示--> <?php endif;?>
■9行目で固定ページの先祖を抽出し、10行目でその順番を逆にしています。
■上記は下記にようなパンくずを表示します。
固定ページ[Wordpress 関数]の親パージで階層1、階層2があった場合です。
■12~16行目でURLをechoする際にエスケープ処理をしています。
関連情報
関連関数は カテゴリ関連関数 を参照してください