Cách tạo Sticky Widget/Sticky Sidebar WordPress: cố định nhưng cuộn mượt, không che menu

Nếu bạn để ý các website hiện đại (blog, trang tin, landing page, shop WooCommerce…), bạn sẽ thấy phần sidebar/widget thường “bám” theo màn hình khi người dùng cuộn trang. Nhờ vậy, các khối quan trọng như bài viết mới, bài nổi bật, form đăng ký, banner, bộ lọc sản phẩm… luôn nằm trong tầm mắt, giúp tăng trải nghiệm và tăng tương tác.

Trong bài này mình sẽ hướng dẫn bạn tạo Sticky Widget (Sticky Sidebar) theo 3 mức độ: không plugin (dùng CSS), dễ nhất (dùng plugin), và mượt kiểu theme premium (dùng thư viện JS). Bạn có thể chọn cách phù hợp nhất với website của mình.

1) Widget/Sidebar là gì?

Widget là các khối chức năng bạn đặt ở sidebar (cột trái/phải) hoặc footer trên WordPress. Trong thực tế, widget thường chứa:

  • Bài viết mới, bài viết nổi bật, danh mục, tag
  • Thanh tìm kiếm, mục lục bài viết, CTA đăng ký
  • Banner quảng cáo, video, HTML tùy chỉnh
  • WooCommerce: bộ lọc sản phẩm, sản phẩm mới/bán chạy…
Widget/Sidebar là gì
Widget/Sidebar là gì

Sidebar tốt giúp người dùng ở lại lâu hơn và dễ đi đến hành động tiếp theo (đọc bài khác, xem sản phẩm khác, đăng ký…).

2) Fixed Widget vs Sticky Widget: khác nhau ra sao?

Fixed Widget (cố định) nghĩa là khi cuộn trang, widget vẫn đứng yên ở một vị trí trên màn hình.

  • Ưu điểm: đơn giản, dễ làm.
  • Nhược điểm: nếu widget dài hơn chiều cao màn hình, phần nội dung phía dưới bị “cắt”, người dùng khó xem hết.

Sticky Widget / Sticky Sidebar là biến thể “xịn” hơn: vẫn bám màn hình nhưng có cơ chế cuộn linh hoạt để hiển thị hết nội dung khi widget dài. Đây là kiểu bạn thường thấy ở nhiều theme hiện đại.

3) Khi nào nên dùng Sticky Sidebar?

  • Khi sidebar có nhiều widget (bài mới + CTA + banner + mục lục…)
  • Khi bạn cần giữ “khối chuyển đổi” luôn trong tầm nhìn (form, hotline, ưu đãi…)
  • Khi làm WooCommerce và bộ lọc sản phẩm khá dài

Lưu ý: Trên mobile, sidebar thường xuống cuối trang hoặc chuyển layout 1 cột, nên bạn nên tắt sticky cho màn hình nhỏ để tránh rối và nặng.

4) Chuẩn bị trước khi làm sticky

  1. Sao lưu (nếu bạn chỉnh code/theme).
  2. Xác định bạn muốn sticky ở đâu: Trang bài viết, trang danh mục, trang sản phẩm, hay toàn site.
  3. Chuẩn bị 2 thứ quan trọng nhất: selector sidebarselector container (khung chứa cả nội dung + sidebar).

Cách tìm selector nhanh:

  1. Mở trang có sidebar ngoài giao diện.
  2. Nhấn Ctrl + Shift + I (Chrome) để mở DevTools.
  3. Bấm icon mũi tên (Select element) rồi click vào cột sidebar.
  4. Copy class hoặc id của phần tử sidebar và phần tử cha chứa cả 2 cột.

5) Cách 1: Dùng CSS position: sticky (nhẹ, nhanh, không plugin)

Nếu theme của bạn “sạch” và không có cấu trúc quá phức tạp, bạn có thể dùng CSS sticky. Bạn chỉ cần thêm CSS vào:

  • Giao diện → Tùy biến → Additional CSS (Khuyến nghị)
  • Hoặc file CSS của child theme

Ví dụ CSS: (bạn thay .sidebar thành selector sidebar thật của bạn)

/* Sticky sidebar bằng CSS */
.sidebar {
  position: sticky;
  top: 120px; /* chừa khoảng tránh đè menu/header */
}

/* Tắt sticky trên mobile (khuyến nghị) */
@media (max-width: 991px) {
  .sidebar {
    position: static !important;
    top: auto !important;
  }
}

Tip: Nếu CSS sticky không hoạt động, hãy kiểm tra phần tử cha có dùng overflow: hidden/auto hay không. Một số theme đặt overflow cho container sẽ làm sticky “tắt thở”. Khi đó bạn nên chuyển sang cách plugin/JS.


6) Cách 2: Dùng plugin WP Sticky Sidebar (dễ nhất, phù hợp đa số website)

Đây là cách mình khuyên dùng nếu bạn muốn làm nhanh, ít đụng code và có hiệu ứng cuộn linh hoạt tốt.

Bước 1: Cài plugin

Vào Plugin → Cài mới và tìm WP Sticky Sidebar → Cài đặt → Kích hoạt.

Plugin WP Sticky Sidebar
Plugin WP Sticky Sidebar

Bước 2: Điền đúng selector

Vào và bạn sẽ thấy các ô dạng:

  • Sidebar / Sticky element selector: dán selector của sidebar cần sticky (ví dụ: #secondary hoặc .post-sidebar)
  • Container selector: dán selector của khung chứa cả nội dung + sidebar (ví dụ: .row, .container, hoặc wrapper của trang)
Cài đặt → WP Sticky Sidebar
Cài đặt → WP Sticky Sidebar
Chọn các Class hoặc ID
Chọn các Class hoặc ID

Mẹo chọn selector cho “bền”:

  • Ưu tiên ID nếu có (vì thường duy nhất).
  • Nếu dùng class, chọn class “đặc trưng”, tránh class chung chung như .col, .large-3 (dễ đụng nhiều nơi).
  • Nếu có nhiều loại trang (blog + sản phẩm), bạn có thể thêm nhiều selector (cách nhau bằng dấu phẩy) để plugin áp dụng đúng nơi.

Bước 3: Chỉnh Top margin để không che header

Trong phần setting, tìm mục kiểu như Additional top margin / Top spacing và đặt giá trị theo chiều cao header/menu. Ví dụ:

  • Header khoảng 100–120px → đặt 130–160px để chừa khoảng đẹp
  • Nếu bạn đang đăng nhập WordPress và có admin bar → cộng thêm khoảng 32px

Bước 4: Kiểm tra thực tế và tinh chỉnh

Mở một bài viết dài, cuộn lên xuống và quan sát sidebar:

  • Sidebar có bám đúng không?
  • Có bị đè menu không?
  • Nếu widget dài, có cuộn mượt để thấy được phần dưới không?

7) Cách 3: Dùng JS (mượt kiểu theme cao cấp, hợp dự án cần tối ưu)

Nếu bạn muốn hiệu ứng “mượt premium” hoặc theme có layout đặc biệt, bạn có thể dùng thư viện sticky sidebar dạng JS (ví dụ Theia Sticky Sidebar). Cách này thường cần người biết kỹ thuật để nhúng file JS/CSS và khởi tạo đúng selector.

Gợi ý thực tế: Nếu bạn không quen code, hãy ưu tiên plugin. Khi cần tối ưu sâu (site lớn, nhiều template), lúc đó mới cân nhắc JS/child theme.


8) Mẹo làm sticky “đẹp” & chuyên nghiệp

Sticky xong chưa đủ, bạn nên làm sidebar nhìn gọn và đồng bộ theme:

  • Thêm padding và khoảng cách giữa các widget
  • Bo góc nhẹ, border/shadow tinh tế
  • Tránh nhồi quá nhiều banner gây rối mắt

CSS gợi ý:

/* Làm widget gọn và sang hơn */
.sidebar .widget {
  background: #fff;
  border: 1px solid rgba(0,0,0,.06);
  border-radius: 12px;
  padding: 16px;
  margin-bottom: 16px;
}

/* Tiêu đề widget rõ ràng hơn */
.sidebar .widget-title {
  margin: 0 0 12px 0;
  font-weight: 700;
}

9) Lỗi thường gặp & cách xử lý nhanh

  • Không sticky được: Sai selector (sidebar/container). Hãy dùng DevTools kiểm tra lại.
  • Bị đè lên menu/header: Tăng Top spacing (ví dụ từ 120px lên 160px).
  • Cuộn bị giật/lag: Sidebar có ảnh/banner nặng → tối ưu ảnh; hoặc plugin tối ưu gộp JS gây xung đột → thử loại trừ file sticky khỏi minify.
  • Chỉ lỗi ở trang sản phẩm/danh mục: Mỗi template có wrapper khác nhau → cần thêm selector đúng cho từng loại trang.

10) FAQ nhanh

Sticky Sidebar có ảnh hưởng SEO không?

Không ảnh hưởng trực tiếp. Nhưng sticky tốt có thể tăng time on site, giảm thoát trang và tăng tương tác — đó là tín hiệu trải nghiệm người dùng tích cực.

Nên dùng CSS hay plugin?

Nếu bạn muốn nhẹ và đơn giản → thử CSS trước. Nếu theme phức tạp hoặc bạn muốn “cuộn linh hoạt” ổn định → dùng plugin WP Sticky Sidebar.

Có nên sticky trên mobile?

Thường không. Mobile hay chuyển thành 1 cột, sticky dễ gây rối. Hãy tắt sticky dưới 991px hoặc theo layout theme.

=> Mua theme wordpress giá rẻ


Kết luận

Sticky Widget/Sticky Sidebar là một nâng cấp nhỏ nhưng “đáng tiền”: giữ nội dung quan trọng luôn trong tầm mắt, tăng trải nghiệm và giúp website trông hiện đại hơn. Bạn cứ bắt đầu từ cách dễ nhất (plugin), sau đó tinh chỉnh top spacing và CSS để sidebar vừa mượt vừa đẹp.

Nếu bạn muốn mình hỗ trợ nhanh hơn: bạn gửi mình link 1 trang bài viết (hoặc nói rõ theme đang dùng, ví dụ Flatsome), mình sẽ gợi ý selector sidebarselector container đúng chuẩn để bạn copy dán là chạy.

=> Xem thêm: