Nhận liên kết bài viết trước WordPress

Chèn các liên kết Bài đăng trước/Tiếp theo vào trang


  1. ← Previous Article

    cat_name; $category_link = get_category_link( $the_cat[0]->cat_ID ); ?>

    All Articles

    Next Article →

  2. ...
9 của bạn trong WordPress khá đơn giản. Nhưng sẽ có lúc bạn muốn thêm một số logic vào bài đăng nào được liên kết đến và khi nào chính xác các liên kết này được hiển thị, và điều đó trở nên khó khăn hơn

Tôi thấy mình đang làm việc trên một trang web được xem theo cách của một cuốn sách, trong đó mỗi bài đăng giống như một trang và mỗi danh mục giống như một chương. Ở cuối mỗi bài đăng có các liên kết đến các bài đăng Trước/Tiếp theo, cùng với một liên kết hướng người dùng quay lại trang danh mục chính. Mã tĩnh trông như thế này


  1. ← Previous Article

    All Articles

    Next Article →

  2. ...

(Có, đoạn mã trên sử dụng SimpleBits’ Pears. tôi yêu lê. )

Một vấn đề mà tôi gặp phải là tôi chỉ muốn liên kết đến các bài đăng trong cùng danh mục hoặc các trang trong cùng một chương. Có một vấn đề khác. Tôi muốn tạo kiểu cho các liên kết trông giống như các nút, trái ngược với việc hiển thị các siêu liên kết văn bản thuần túy, điều đó có nghĩa là tôi cần linh hoạt hơn so với việc tôi tìm thấy thẻ đơn giản hơn được cung cấp. (Trong WordPress có rất nhiều cách khác nhau để liên kết với mọi thứ. ) Thẻ


  1. ← Previous Article

    cat_name; $category_link = get_category_link( $the_cat[0]->cat_ID ); ?>

    All Articles

    Next Article →

  2. ...
0 sẽ hiển thị văn bản cách điệu nếu có bài đăng tiếp theo, nếu không nó sẽ không hiển thị gì. Nhưng tôi không muốn có nút không có văn bản nếu không có bài đăng liền kề, tôi không muốn có nút nào cả. Vì vậy, tôi đã chọn sử dụng các thẻ

  1. ← Previous Article

    cat_name; $category_link = get_category_link( $the_cat[0]->cat_ID ); ?>

    All Articles

    Next Article →

  2. ...
1/

  1. ← Previous Article

    cat_name; $category_link = get_category_link( $the_cat[0]->cat_ID ); ?>

    All Articles

    Next Article →

  2. ...
0 cùng với các câu lệnh điều kiện

  1. ← Previous Article

    cat_name; $category_link = get_category_link( $the_cat[0]->cat_ID ); ?>

    All Articles

    Next Article →

  2. ...
1

Mã tôi đã kết thúc với trông như thế này


  1. ← Previous Article

    cat_name; $category_link = get_category_link( $the_cat[0]->cat_ID ); ?>

    All Articles

    Next Article →

  2. ...

Hãy xem qua từng dòng mã này và xem cách khắc phục từng vấn đề nêu trên

Đầu tiên, tôi đặt một số biến để lưu trữ thông tin của các bài đăng được tìm thấy trước và sau bài đăng mà người dùng hiện đang xem với đoạn sau (tất nhiên là bên trong vòng lặp)



Các biến được đặt là


  1. ← Previous Article

    cat_name; $category_link = get_category_link( $the_cat[0]->cat_ID ); ?>

    All Articles

    Next Article →

  2. ...
2 và

  1. ← Previous Article

    cat_name; $category_link = get_category_link( $the_cat[0]->cat_ID ); ?>

    All Articles

    Next Article →

  2. ...
3. Và trong mỗi thẻ, tôi đặt một số đối số—giá trị

  1. ← Previous Article

    cat_name; $category_link = get_category_link( $the_cat[0]->cat_ID ); ?>

    All Articles

    Next Article →

  2. ...
4 đặt tham số

  1. ← Previous Article

    cat_name; $category_link = get_category_link( $the_cat[0]->cat_ID ); ?>

    All Articles

    Next Article →

  2. ...
5 thành true, nghĩa là chỉ các bài đăng trong cùng danh mục mới được truy xuất. Điều này thiết lập ranh giới của chương. Tham số trống thứ hai có nghĩa là tôi không muốn loại trừ bất kỳ danh mục nào (vì trong trường hợp này, tôi chỉ xử lý một danh mục tại một thời điểm)

Với các bài đăng liền kề được lấy ra, chúng ta có thể bắt đầu tạo các nút. Nhưng tôi chỉ muốn các nút xuất hiện nếu có một bài đăng để liên kết đến. Ví dụ: bài đăng đầu tiên trong danh mục/chương không được liên kết với bài đăng trước đó và do đó, nút đăng bài trước đó sẽ không xuất hiện. Bằng cách gói nút bài đăng trước trong câu lệnh logic sau, chúng ta có thể ẩn nút bài đăng trước một cách hiệu quả nếu không có bài đăng trước đó


 .. 

Tiếp tục xây dựng nút, chúng tôi trích xuất ID và tiêu đề của bài đăng từ biến của chúng tôi và lặp lại dữ liệu này cho các thuộc tính


  1. ← Previous Article

    cat_name; $category_link = get_category_link( $the_cat[0]->cat_ID ); ?>

    All Articles

    Next Article →

  2. ...
6 và

  1. ← Previous Article

    cat_name; $category_link = get_category_link( $the_cat[0]->cat_ID ); ?>

    All Articles

    Next Article →

  2. ...
7 của chúng tôi


  1. ← Previous Article

    cat_name; $category_link = get_category_link( $the_cat[0]->cat_ID ); ?>

    All Articles

    Next Article →

  2. ...
2

Tiếp theo, tôi làm tương tự với nút đăng bài tiếp theo


  1. ← Previous Article

    cat_name; $category_link = get_category_link( $the_cat[0]->cat_ID ); ?>

    All Articles

    Next Article →

  2. ...
3

Nút cuối cùng để tạo là nút đưa người dùng trở lại trang danh mục chính của bất kỳ danh mục nào mà bài đăng họ hiện đang xem được tìm thấy trong

Để làm điều này, tôi đã truy xuất danh mục (


  1. ← Previous Article

    cat_name; $category_link = get_category_link( $the_cat[0]->cat_ID ); ?>

    All Articles

    Next Article →

  2. ...
8), tên danh mục (

  1. ← Previous Article

    cat_name; $category_link = get_category_link( $the_cat[0]->cat_ID ); ?>

    All Articles

    Next Article →

  2. ...
9) và URL của trang danh mục (


0) và lặp lại nó trong các thuộc tính thích hợp của thẻ liên kết, tương tự như những gì đã được thực hiện với phần còn lại


  1. ← Previous Article

    cat_name; $category_link = get_category_link( $the_cat[0]->cat_ID ); ?>

    All Articles

    Next Article →

  2. ...
7

Với điều đó, các liên kết bài viết Trước/Tiếp theo “thông minh” của tôi đã được thiết lập

Để làm cho chúng thông minh hơn nữa, tôi có thể thêm logic để nói "nếu không có bài đăng tiếp theo trong danh mục này, hãy hiển thị nút danh mục/chương tiếp theo", nhưng đó là công việc của một ngày khác

Thật không may, công việc này là một chút vội vàng. Tôi chắc chắn rằng, nếu có thêm một chút thời gian, ngay cả mã đã được đưa vào sản xuất cũng có thể được thực hiện hiệu quả hơn một chút

Bất chấp điều đó, tôi nghĩ đây là một ví dụ tốt về cách mở rộng cách sử dụng cơ bản của thẻ



1/

  1. ← Previous Article

    cat_name; $category_link = get_category_link( $the_cat[0]->cat_ID ); ?>

    All Articles

    Next Article →

  2. ...
0