!
也想出现在这里? 联系我们
广告位

WordPress 添加自定义文章类型的存档页面到菜单

如果你的网站使用了自定义文章类型,你可能需要将它的存档页面添加到导航菜单,虽然你可以使用“链接”来添加:

但是这样添加的链接有一个弊端:访问这个自定( 4 Y $ z A V义文章类型下的页y 5 p & +面时,没办法高亮这个菜单项。其实,最好的效果就是在菜单备选中罗列已有的自定义文章类型,然后可以选择/ A [ : ;添加至菜单:

要实现这个功能,将下面的代码添加到主题的 functions.php :

  1. /\ ; ) ~ . ` ] q \**
  2. * WoQ \ 9rdPress 添加自定义文章类型的存档页面到菜单
  3. */
  4. if( !classC k D N Z L 3 (_exists('CustomPosE : ptTypeArchiveInNavMenu') ) {
  5. class CustomPostTk & J 8 &ypeArchiveInNavMenu {
  6. function CustomPostTypeArchiveInNavMed = u u q F r inup D E P W i40;) B H A M 5 n + - E3;
  7. add_action( 'admin_head-nav-menus.php', array( &$this, 'cpt_navmenu_metabo* w 8 }xK & K L !' ) );
  8. adL F ~ 5 i ; @ R 9d_filter( 'wp_get_nav_menu_items', array( &1 j 9amp;$thisu $ 6 ! l 9 q,'cpt: 3 o_archive_menu_filter'), 10, 3 );
  9. }
  10. function cpt_navmenu_metabox() {
  11. add_meta_box( 'add-cpt', __('自定义文章类型存档'),v 3 I D + = ; G O array( &$this, 'cpt_navmenu_metabox_content' ), 'nav-menus', 'side', 'default' );
  12. }
  13. functin F v / : Q t Y hon cpt_navmenu_me, @ W ? v W R utaboxF - % Y / 2 U_content() {
  14. $post_types = get_post_types( array( 'show_in_nav_menus' => true, 'has_archive' => true ), 'object' );
  15. if( $post_types 6 A v l z1; {
  16. foreach ( $post_types as &$post_0 A n @ Tty0 S J * ( j c N Epe ) {
  17. $post_type->classes = array&) * 2#40;);
  18. $post_type-&gt\ d _ 4;type = $post_typeE y e U n a->name;
  19. $post_type->obje; U ~ [ct_id = $post_type->name;
  20. $post_type->title = $post_typea 9 ) g e-&gK # \ 2 R \ It;labels->name . __&% M s c F ( V#40; '存档' );
  21. $post_type->object = 'cpt-archive';_ C N - u
  22. }w D =
  23. $walke\ Q + ~ / t 0 M Tr = new Walker_Nav_Menu_Checklist( array() );
  24. echo '<div id="cpz V ( - E \ _t-archive" class="pos{ _ 6 . ( % zttypediv">';
  25. echo '<div id="tabs-panel-cpt-archive" class="tabs-panel tabs-panel-active">';
  26. echo '<ul id="ctpn | A = o N b U-archive-checklist" class="categorychecklist form-nY Q q , U $ m do-clear&qu@ # t Z / ? O d Kot;>H F p s P b'3 C E . b 0 I M;
  27. echo walk_nav_menu_tree( array_map('wp_setup_nav6 c R_menu_item', $post_types), 0, (object) array( 'walker' => $walker) );
  28. echo '</ul>';
  29. echo '</div><!-- /.tp c ( h : zabs-panel -->';
  30. echo '</div>';
  31. echo '<p class="bu1 G O r i [ I i @tton-controls">';
  32. echo '<span class="add-to-menu">';
  33. echo '<input type=&t z r ( n 0 b o gquot;submit"' . disabled( $nav_menu_s; E v } ;elected_1 | o b h Pid, 0 ) . ' class="button-secondary submit-add-to-menu right" value=&qu, j ( V s c b D eot;'. __('添加至菜单') . '&qo G G ? ( . . Muot; name="add-ctp-archive-menu-item" id=&quot( n s L * g g Z E;submit-v 6 N [cpt-archive" />';
  34. echo '&lt{ [ d u ( /;span class="E + v r y rspinner"></span>';
  35. echof . S r q '</span>';
  36. echo '</p>';
  37. } else {
  38. echo '没有自定义文章类型';
  39. }
  40. }
  41. function cpt_aW k : \ \ ) Orchive_menu_filter(v * Z q ) $items, $menu, $args ) {
  42. foreach( $items as &$item ) {
  43. if( $item->object != 'cpt-archive' ) continue;
  44. $iti & Lem->url = get_post_tyk M x { 9 p hpe_archive_link( $item->type );
  45. if( get_query_var( 'post_type' ) == $item->type ) {
  46. $item->classes[] = 'current-menu-item';
  47. $item->current = true;
  48. }
  49. }
  50. return $items;
  51. }
  52. }
  53. $CustomPostTypeArchiveIk ) \ ( [ *nNavMenu = new CustomPostTypeArchiveInNavMenu();
  54. }

通过这个方法添加的自定义文章类型的存档页面,只要是属于这个文章类型的页面,都会自动在菜单中添加一个 current-menu-item:

  1. <li class=&w ! f J 9 p R wquD & & Z 5 = w Yot;current-menu-item"><a href="https://www.wpdaxue.com/questions">问题存档</a></li>

配合 CSS 即可实现当前菜单项的高亮效果,如果你在主题或插件开发中使用了自定义文章类型,建议将该8 O K r v @功能集成到你的主题和插件中,方便用户使用。以上代码来自 Custom Post Type's Archive in WP Nav Menu 插件,如果你不想2 1 {折腾代码,安装该插件即可。

给TA打赏
共{{data.count}}人
人已打赏
WordPress教程

Woocommerce 商店页面上获取产品差异图像

2022-8-26 14:45:22

WordPress教程

WooCommerce – 根据购物车中商品数量的有条件累进折扣

2022-8-26 17:27:18

下载说明

  • 1、微码盒所提供的压缩包若无特别说明,解压密码均为weimahe.com
  • 2、下载后文件若为压缩包格式,请安装7Z软件或者其它压缩软件进行解压;
  • 3、文件比较大的时候,建议使用下载工具进行下载,浏览器下载有时候会自动中断,导致下载错误;
  • 4、资源可能会由于内容问题被和谐,导致下载链接不可用,遇到此问题,请到文章页面进行反馈,以便微码盒及时进行更新;
  • 5、其他下载问题请自行搜索教程,这里不一一讲解。

站长声明

本站大部分下载资源收集于网络,只做学习和交流使用,版权归原作者所有;若为付费资源,请在下载后24小时之内自觉删除;若作商业用途,请到原网站购买;由于未及时购买和付费发生的侵权行为,与本站无关。本站发布的内容若侵犯到您的权益,请联系本站删除,我们将及时处理!
0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索