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

WordPress首页文章页或其它自定义侧边栏

一般主题都有带侧边栏的吧,大部分都在首页或文章页有设定,如果想在页面上关连侧边栏并且是独立于首页和文章页的呢,这时候就要添加这些代码了,在主题的 function.php 中添加:

  1. function widgetSetup(){
  2. $args = array(
  3. 'name' => '首页固定侧边栏',
  4. 'id' => 'sidebar-index-affix',
  5. 'description' => '显示在首页固定侧边栏小工具',
  6. 'class' => 'custom',
  7. 'before_widget' => '<div id="%1$s" class="widget %2$s">',
  8. 'after_widget' => '</div>',
  9. 'before_title' => '<div class="widget-title">',
  10. 'after_title' => '</div>'
  11. );
  12. register_sidebar($args);
  13. $args = array(
  14. 'name' => '首页侧边栏',
  15. 'id' => 'sidebar-index',
  16. 'description' => '显示在首页侧边栏小工具',
  17. 'class' => 'custom',
  18. 'before_widget' => '<div id="%1$s" class="widget %2$s">',
  19. 'after_widget' => '</div>',
  20. 'before_title' => '<div class="widget-title">',
  21. 'after_title' => '</div>'
  22. );
  23. register_sidebar($args);
  24. $args = array(
  25. 'name' => '文章页固定侧边栏',
  26. 'id' => 'sidebar-article-affix',
  27. 'description' => '显示在文章页固定侧边栏小工具',
  28. 'class' => 'custom',
  29. 'before_widget' => '<div id="%1$s" class="widget %2$s">',
  30. 'after_widget' => '</div>',
  31. 'before_title' => '<div class="widget-title">',
  32. 'after_title' => '</div>'
  33. );
  34. register_sidebar($args);
  35. $args = array(
  36. 'name' => '文章页侧边栏',
  37. 'id' => 'sidebar-article',
  38. 'description' => '显示在文章页侧边栏小工具',
  39. 'class' => 'custom',
  40. 'before_widget' => '<div id="%1$s" class="widget %2$s">',
  41. 'after_widget' => '</div>',
  42. 'before_title' => '<div class="widget-title">',
  43. 'after_title' => '</div>'
  44. );
  45. register_sidebar($args);
  46. $args = array(
  47. 'name' => '页面页固定侧边栏',
  48. 'id' => 'sidebar-page-affix',
  49. 'description' => '显示在页面页固定侧边栏小工具',
  50. 'class' => 'custom',
  51. 'before_widget' => '<div id="%1$s" class="widget %2$s">',
  52. 'after_widget' => '</div>',
  53. 'before_title' => '<div class="widget-title">',
  54. 'after_title' => '</div>'
  55. );
  56. register_sidebar($args);
  57. $args = array(
  58. 'name' => '页面页侧边栏',
  59. 'id' => 'sidebar-page',
  60. 'description' => '显示在页面页侧边栏小工具',
  61. 'class' => 'custom',
  62. 'before_widget' => '<div id="%1$s" class="widget %2$s">',
  63. 'after_widget' => '</div>',
  64. 'before_title' => '<div class="widget-title">',
  65. 'after_title' => '</div>'
  66. );
  67. register_sidebar($args);
  68. }
  69. add_action('widgets_init', 'widgetSetup');

以上的代码包括了首页,文章页,指定一个页面的侧边栏,同时每个侧边栏都包括一个不随滚动条滚动的边栏,在主题 sidebar.php 替换为以下代码:

  1. <?php
  2. /**
  3. * The template for the sidebar containing the main widget area
  4. */
  5. ?>
  6. <aside id="sidebar">
  7. <div class="sidebar-wrap">
  8. <?php if (!is_active_sidebar('sidebar-index') && !is_active_sidebar('sidebar-index-affix') && !is_active_sidebar('sidebar-article') && !is_active_sidebar('sidebar-article-affix')): ?>
  9. <div class="widget"><p>请到[后台->外观->小工具]首页或文章页侧边栏中添加需要显示的小工具。</p></div>
  10. <?php else: ?>
  11. <?php if (is_home()): ?>
  12. <div class="affix">
  13. <?php dynamic_sidebar('sidebar-index-affix'); ?>
  14. </div>
  15. <div class='sidebar-index wow slideInUp'>
  16. <?php dynamic_sidebar("sidebar-index"); ?>
  17. </div>
  18. <?php endif; ?>
  19. <?php if (is_single()): ?>
  20. <div class="affix">
  21. <?php dynamic_sidebar('sidebar-article-affix'); ?>
  22. </div>
  23. <div class='sidebar-article wow slideInUp'>
  24. <?php dynamic_sidebar("sidebar-article"); ?>
  25. </div>
  26. <?php endif; ?>
  27. <?php if (is_page(1003)): ?>
  28. <div class="affix">
  29. <?php dynamic_sidebar('sidebar-page-affix'); ?>
  30. </div>
  31. <div class='sidebar-page wow slideInUp'>
  32. <?php dynamic_sidebar("sidebar-page"); ?>
  33. </div>
  34. <?php endif; ?>
  35. <?php endif; ?>
  36. </div>
  37. </aside>

这里包括了固定栏的 affix,通过 JS 和 css 便能弄出各种样式了,设置这些后,找到:外观-小工具,就能看到这些侧边栏了的 JS

滚动超出侧边栏高度时,固定侧边栏:

  1. var headerH = $('#header').height();
  2. var footerH = $('#footer').innerHeight();
  3. var windowH = $(window).height();
  4. var sidebarW = $('#sidebar').width();
  5. var sidebarH = $('#sidebar').outerHeight();
  6. var sidebarTop = $('#sidebar').offset().top;
  7. $(window).scroll(function(event) {
  8. var bodyH = $(document).height();
  9. var affixH = $(".affix").innerHeight();
  10. var leftH = (windowH - headerH - affixH) > 0 ? (windowH - headerH - affixH) : 0;
  11. var scrollTop = $(document).scrollTop();
  12. var scrollBottom = bodyH - windowH - scrollTop;
  13. if (scrollTop > sidebarTop+ sidebarH) {
  14. if (scrollTop < (bodyH - footerH - windowH + leftH)) {
  15. $('.affix').css({
  16. position: 'fixed',
  17. top: $('#header').height()+$('#header').position().top+3,
  18. bottom: '',
  19. width: sidebarW + 'px'
  20. });
  21. } else {
  22. $('.affix').css({
  23. position: 'fixed',
  24. top: '',
  25. bottom: footerH - scrollBottom,
  26. width: sidebarW + 'px',
  27. });
  28. }
  29. } else {
  30. $('.affix').css({
  31. position: '',
  32. top: '',
  33. width: sidebarW + 'px',
  34. });
  35. }
  36. }

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

调用WordPress当前分类列表标签

2024-6-21 14:09:43

WordPress教程

无需插件实现WordPress实用功能 [ 上 ]

2024-6-28 14:41:41

下载说明

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

站长声明

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