Liệt kê những người đóng góp trang web theo cách của WordPress

Cung cấp cho Caesar những điều thuộc về Caesar, và cho Đức Chúa Trời những điều thuộc về Đức Chúa Trời — Chúa Giê- su Christ (ở Na-xa-rét)
Vì mục đích ngắn gọn, tôi chắc chắn rằng, “trình bày cho tác giả những gì là của ông ấy” đã bị loại ra khỏi trích dẫn phúc âm khái quát ban đầu được quy cho JC of Nazareth. RIP, nhân tiện. Nó đã được ngụ ý, rõ ràng, phải không?

Sang một bên những câu chuyện trước khi đi ngủ, nếu bạn đang xây dựng chủ đề cho bất kỳ thứ gì gần với trang tạp chí, bạn sẽ thấy rằng tất cả các tác giả đóng góp sẽ muốn được ghi công. Cả trong phần ngoại tuyến dự kiến, cùng với bài viết của họ mà còn trên một “trang dành cho cộng tác viên” hoặc trang tương đương. Nó chỉ đơn giản là bản chất của con người và các trang web có nhiều tác giả.

Một cách tiếp cận để tùy chỉnh các trường và khả năng có sẵn trên trang này là xác định loại bài đăng tùy chỉnh “Người đóng góp” . Tại đây, bạn có thể xác định vô số trường mà thông tin của người đóng góp có thể được điền và hiển thị.

Tuy nhiên, hãy dành một phút cho suy nghĩ đó và bạn sẽ nhanh chóng nhận ra rằng cách tiếp cận này sẽ chỉ là một sự sao chép vô nghĩa của chức năng đã có thể mở rộng vô tận hiện có trong chức năng Người dùng cốt lõi.

Trong phần trước, bạn đã xác định (và loại bỏ) một vài trường bổ sung cho người dùng. Sau đó, làm thế nào để bạn hiển thị các trường đó trên giao diện người dùng và xa hơn nữa, làm thế nào để bạn giới hạn những gì người dùng được hiển thị? Ví dụ: điều gì xảy ra nếu bạn chỉ muốn hiển thị thông tin cho những người dùng đã đóng góp / viết ít nhất một bài đăng. Làm thế nào để bạn làm điều đó? Hoặc chỉ dành cho người dùng có quyền truy cập cấp “quản trị viên”. Làm thế nào để bạn đi về điều đó?

Cho tôi xem người dùng!

Các get_users() chức năng cốt lõi là bạn bè của bạn ở đây. Hàm này, với một tập hợp các đối số, sẽ truy xuất tập hợp những người dùng phù hợp cần thiết. Vì lợi ích của ví dụ này, giả sử rằng bạn có một chủ đề cho một trang tạp chí. Trên trang web này, có một trang xuất ra danh sách các tác giả. Tuy nhiên, không phải tất cả các tác giả, chỉ là những tác giả đang kéo trọng lượng của chính họ; đã đóng góp cho tạp chí nói trên.

Xác định chức năng

Đầu tiên chúng ta khai báo một hàm butter_contributing_authors(). Sau đó, chúng tôi get_users() lấy và lưu trữ thông tin của những người đóng góp trong một biến $contributors để sử dụng sau này:
function butter_contributing_authors() {
  $contributors = get_users( array(
    'fields' => 'all',
    'orderby' => 'post_count',
    'order' => 'DESC',
    'who' => 'authors',
  ));
}
Đối số ' fields' được mặc định là ' all' vì vậy về mặt kỹ thuật, chúng ta có thể bỏ qua điều này nhưng để minh họa, chúng ta sẽ để nguyên. Điều này lấy tất cả những người đóng góp / người dùng cụ thể user_fields.

Tùy thuộc vào cách triển khai của bạn, ‘orderby’ sắp xếp người dùng theo ‘ID’, ‘đăng nhập’, ‘tên đẹp’, ‘email’, ‘url’, ‘đã đăng ký’, ‘display_name’ hoặc ‘post_count’. Giả sử chủ đề tạp chí, bạn có thể muốn ưu tiên / nổi bật cho những người đóng góp cao nhất. Ví dụ này sắp xếp thứ tự các cộng tác viên dựa trên số lượng bài đăng mà họ đã là tác giả theo thứ tự giảm dần (DESC: được xác định theo ‘thứ tự’).

Với điều này, WordPress có thể thu hút người dùng và đặt hàng cho họ. Để chỉ lấy những người dùng có số lượng bài đăng lớn hơn 1 và cũng xác định đánh dấu bao gồm các phương thức liên hệ được thêm vào (mà chúng tôi đã xác định trong chương Trường người dùng), đây là cách hàm đầy đủ trông như thế nào:

function butter_contributing_authors() {
  $contributors = get_users( array(
    'fields'  => 'all',
    'orderby' => 'post_count',
    'order'   => 'DESC',
    'who'     => 'authors',
  ) );

  foreach ( $contributors as $contributor ) :
    $post_count = count_user_posts( $contributor );

    // Move on if user has not published a post (yet).
    if ( ! $post_count ) {
      continue;
    }
  ?>

  <a href="<?php echo esc_url( get_author_posts_url( $contributor ) ); ?>">
    <figure>
      <?php echo get_avatar( $contributor, 132 ); ?>
      <figcaption>
        <h2><?php echo get_the_author_meta( 'display_name', $contributor ); ?></h2>
        <p><?php echo get_the_author_meta( 'description', $contributor ); ?></p>
        <p><?php printf( _n( '%d Article', '%d Articles', $post_count, 'butter' ), $post_count ); ?></p>
        </figcaption>
    </figure>
  </a>

  /* 
  definition list of usernames (typically you’ll want to define actual links and maybe icons for social networks) as defined in the preceding section.
  */

  <dl>

    <dt><?php __('Skype', 'butter'); ?></dt>
    <dd><?php echo get_the_author_meta( 'skype', $contributor_id ); ?></dd>

    <dt><?php __('Twitter', 'butter'); ?></dt>
    <dd><?php echo get_the_author_meta( 'twitter', $contributor_id ); ?></dd>

    <dt><?php __('Dribbble', 'butter'); ?></dt>
    <dd><?php echo get_the_author_meta( 'dribbble', $contributor_id ); ?></dd>

    <dt><?php __('Facebook', 'butter'); ?></dt>
    <dd><?php echo get_the_author_meta( 'facebook', $contributor_id ); ?></dd>

  </dl>

  <?php endforeach;
}
endif;

Sử dụng chức năng

Với chức năng nêu trên, giờ đây chúng tôi có thể liệt kê các tác giả đóng góp của chúng tôi. Tất cả những gì bạn cần làm là tạo một mẫu trang có tên, ví dụ: Contributor.php. Đảm bảo thiết lập nó làm mẫu tức là đảm bảo bạn có chú thích mã cần thiết ở trên cùng để hiển thị nó dưới dạng mẫu trang. I E:
<?php
/*
 * Template Name: Contributor Page
*/
Bên trong một vòng lặp trên trang này, bây giờ tất cả những gì bạn cần làm bây giờ là gọi hàm đã xác định trước đó:
<?php butter_contributing_authors(); ?>
Xong! Do đó, danh sách các tác giả đóng góp sẽ được xuất ra ở đây như được xác định bởi hàm.

Làm cho nó có thể cắm được; đối xử tốt với trẻ em

Như với các chức năng như vậy, bạn nên cân nhắc việc làm cho chức năng này có thể cắm được tức là có thể truy cập và ghi đè bởi các chủ đề con. Điều này thật dễ dàng. Chỉ cần chắc chắn rằng bạn bọc nó trong một if ( ! function_exists() ) và bạn nên tốt. I E
if ( ! function_exists( 'butter_contributing_authors' ) ) :
  function butter_contributing_authors() {
  // function as defined in above steps
  }
endif;