Đặt hàng bài đăng (trên toàn bộ trang web) theo ngày siêu dữ liệu


8

Trang 'Trang chủ' tùy chỉnh của tôi được đặt để sắp xếp các bài đăng tùy chỉnh của tôi thông qua trường ngày tùy chỉnh với mã này (được cập nhật để được đặt tên tùy chỉnh) trong hàm.php:

// sort order for home page
add_action('wp', 'wwgo_check_page');
function wwgo_check_page () {
if (is_page()) {
    add_filter('get_previous_post_sort', 'sort_it');
    add_filter('get_next_post_sort', 'sort_it');
    add_filter('posts_orderby', 'sort_it' );
    add_filter('posts_join', 'join_it' );
    add_filter('posts_where', 'where_it' );

    function sort_it () {
        global $wpdb;

        return " $wpdb->postmeta.meta_value ASC ";
    }

    function join_it( $join ) {
        global $wpdb;

        $join .= " LEFT JOIN $wpdb->postmeta ON($wpdb->posts.ID = $wpdb->postmeta.post_id) ";

      return $join;
    }

    function where_it( $where ) {
        global $wpdb;
        $where .= "AND $wpdb->postmeta.meta_key = 'deadline' ";

      return $where;
    }
}



}

Đó là dandy và đơn giản. Hiện nay. Tôi muốn điều này để làm việc trên toàn bộ trang web. Tôi muốn bài viết trên các trang lưu trữ, danh mục, vv được sắp xếp trước theo trường ngày tùy chỉnh.

Có ý kiến ​​gì không?

Tôi đã thử thay đổi ' if' thành is_archive()nhưng không có kết quả. Tôi cũng đã cố gắng <! is_single()>.

Tôi chắc chắn nó sẽ là một cái gì đó đơn giản. Nhưng tôi chưa quen với php và do đó không biết gì.

Đây là trang web , nơi bạn có thể thấy trang chủ được sắp xếp độc đáo, nhưng nếu bạn nhấp vào 'thơ' (người duy nhất có một vài bài đăng), thì việc sắp xếp không hoạt động.

Bất kỳ lời đề nghị sẽ được đáp ứng với nhiều niềm vui.

Cám ơn sự tử tế của anh.


Bạn nên tiền tố tất cả các chức năng của bạn với ví dụ. josh_để tránh việc đặt tên.
kaiser

Bạn có nghĩa là như thực hành tốt hoặc để giải quyết điều này? Tôi đã thử sao chép lại mã cho 'is_archive' và nó đã cho phép tôi gọi lại chức năng, nhưng việc sắp xếp không hoạt động ...
josh

1
Vâng, đó là một thực hành tốt. Thêm vào đó: Bạn không nên bọc các chức năng trong các chức năng.
kaiser

tuyệt vời, tuyệt vời (tôi vừa sao chép mã từ một trang web, tbh. Tôi mới sử dụng php & wordpress). Bất kỳ tiến bộ nào về cách làm cho điều này hoạt động trên toàn trang web? Tôi có nó hoạt động với nhiều trang tùy chỉnh hơn và cùng chức năng được đặt thành (is_page ()) nhưng điều này vẫn không làm được gì cho các trang lưu trữ của tôi. Tôi không biết làm thế nào để sửa chúng ...
josh

1
Thay vì đặt các hàm trong các hàm, hãy thử sử dụng một lớp thay thế.
Manny Fleurmond

Câu trả lời:



0

Tại sao bạn không sử dụng query_posts ()?

<?php
query_posts('meta_key=key_name&orderby=key_name&sort=ASC');
if ( have_posts() ) : while ( have_posts() ) : the_post();

endwhile; else:

endif;

wp_reset_query();

Bạn cũng có thể thay đổi truy vấn bằng cách sử dụng hook pre_get_posts và sắp xếp điều kiện của bạn ở đó với is_archive (), is_page (), v.v.


0

Tôi cũng đang nhìn vào câu hỏi khác của bạn .

Nếu bạn muốn sắp xếp theo giá trị meta ngày, chúng phải có cùng định dạng - tôi đoán đó là định dạng ngày ('m-y') của PHP như bạn đã chỉ định trong mã của mình ở đó?

Nếu đó là trường hợp, bạn có thể thấy rằng nếu bạn thay đổi meta_valuemã của meta_value_numbạn để bạn có được kết quả tốt hơn?

Không chắc chắn điều này sẽ làm việc, nhưng có thể đáng để thử.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.