Làm thế nào để lọc theo định dạng bài trong admin?


7

Tôi cần lọc bài viết của mình bằng Post-Formats trong admin?

Làm thế nào tôi có thể làm điều đó ?

Hiện tại, Wordpress cho phép lọc theo Danh mục và Ngày.

Câu trả lời:


8

Hãy thử plugin này tôi đã nấu lên:

<?php
! defined( 'ABSPATH' ) AND exit;
/**
 * Plugin Name: (#26032) WP_List_Table Post Format filter extension
 * Plugin URI:  http://wordpress.stackexchange.com/questions/26032/how-to-filter-by-post-format-in-admin
 * Description: Filters the admin WP_List_Table by post format
 * Author:      Bainternet
 * Author URI: http://en.bainternet.info
 */


function wpse26032_admin_posts_filter( &$query )
{
    if ( 
        is_admin() 
        AND 'edit.php' === $GLOBALS['pagenow']
        AND isset( $_GET['p_format'] )
        AND '-1' != $_GET['p_format']
        )
    {
        $query->query_vars['tax_query'] = array( array(
             'taxonomy' => 'post_format'
            ,'field'    => 'ID'
            ,'terms'    => array( $_GET['p_format'] )
        ) );
    }
}
add_filter( 'parse_query', 'wpse26032_admin_posts_filter' );

function wpse26032_restrict_manage_posts_format()
{
    wp_dropdown_categories( array(
         'taxonomy'         => 'post_format'
        ,'hide_empty'       => 0
        ,'name'             => 'p_format'
        ,'show_option_none' => 'Select Post Format'
    ) );
}
add_action( 'restrict_manage_posts', 'wpse26032_restrict_manage_posts_format' );

Vâng ! Cảm ơn ! Nó hoạt động hoàn hảo ngoại trừ khi tôi chọn không có định dạng bài, nó không trả về cho tôi. Ví dụ: Một danh mục + không có định dạng bài đăng = KHÔNG CÓ
Steffi

Chỉ cần một lưu ý, bạn thực sự có thể truy vấn trực tiếp các định dạng bài đăng bằng cách thêm &post_format=asidelàm ví dụ cho URL ... Tuy nhiên !!! .. nó không hoạt động đúng và tạo ra các thông báo / cảnh báo, mà tôi chỉ có thể cho rằng đó là một lỗi vì nó cũng có các tác dụng phụ khác (bạn sẽ thấy ý tôi là gì nếu bạn kiểm tra nó).
t31os

@Steffi: xin lỗi tôi đã sửa nó (tôi nghĩ) và cập nhật mã.
Bai Internet

Có một vài vấn đề khiến bộ lọc hoạt động một mình, bạn có thể phát hiện ra một bản sửa lỗi trong mã của tôi (một điều đặc biệt là tôi đã đi theo vòng tròn trong một thời gian) ..;)
t31os

@ t31os, đã sửa và thử, mã cập nhật.
BaiNET

2

Tôi thực sự đã làm việc với một giải pháp cho bạn, chỉ cần viết lại một số phần của mã (vì tôi dựa trên một plugin khác mà tôi đã viết tương tự nhưng đối với các mẫu trang trên các loại phân cấp).

Cái này lớn hơn một chút so với plugin của Bai Internet, vì vậy, bằng mọi cách hãy kiên quyết với giải pháp của anh ấy nếu bạn hài lòng với nó (đừng cảm thấy bắt buộc phải chuyển đổi như tôi đang nói), dù sao tôi cũng sẽ đăng nó lên, vì lợi ích của bất cứ ai có thể quan tâm Nó sẽ hoạt động cho bất kỳ loại bài đăng nào hỗ trợ định dạng bài đăng.

Chỉnh sửa / Cập nhật: Quyết định tôi có thể đặt mã vào một plugin thích hợp, cũng thực hiện tương tự để thêm bộ lọc mẫu trang vào các loại bài đăng phân cấp (các mẫu trang hỗ trợ). Liên kết dưới đây cho bất cứ ai quan tâm,

Hy vọng điều đó hữu ích .. :)


LƯU Ý: Nếu tôi bỏ lỡ / bỏ qua bất cứ điều gì, hãy để lại nhận xét vào câu trả lời.
t31os

1

Một lỗi nhỏ, để giữ lựa chọn thả xuống ở định dạng bài đăng thực tế, trong hàm wpse26032_restrict_manage_posts_format :

function wpse26032_restrict_manage_posts_format()
{

    $post_format_ID = ( isset( $_GET['p_format'] ) && $_GET['p_format'] != '' ) ? $_GET['p_format'] : -1;

    wp_dropdown_categories( array(
         'taxonomy'         => 'post_format'
        ,'hide_empty'       => 0
        ,'name'             => 'p_format'
        ,'show_option_none' => 'Select Post Format'
        ,'selected'         => $post_format_ID
    ) );
}
add_action( 'restrict_manage_posts', 'wpse26032_restrict_manage_posts_format' );

0

Kể từ WordPress 4.3, chức năng column_title()sẽ bao gồm định dạng bài đăng dưới dạng biểu tượng bên cạnh tiêu đề bài đăng. Nhấp vào biểu tượng này sẽ tự động lọc danh sách hiện tại sang định dạng bài đã chọn.

(Các) câu trả lời được chấp nhận sẽ tiếp tục hoạt động và hiển thị danh sách thả xuống, tuy nhiên, nó có thể được đơn giản hóa vì chúng ta không cần phải lọc truy vấn sau đó nếu chúng ta sử dụng cùng một biến truy vấn.

add_action( 'restrict_manage_posts', function( $post_type = "" ) {
    if ( in_array( $post_type, array( 'post' ) ) ) {
        wp_dropdown_categories( array(
            'taxonomy'          => 'post_format',
            'hide_empty'        => 0,
            'name'              => 'post_format', // Do not need to use a custom variable name.
            'show_option_all'   => 'Select Post Format', // Use 'show_option_all' instead of 'show_option_none' as the default choice.
            'value_field'       => 'slug',
        ) );
    }
} );

Một phương pháp khác là hiển thị định dạng bài đăng dưới dạng cột riêng. Đoạn mã sau sẽ hiển thị một liên kết sẽ lọc danh sách, mặc dù tôi gặp vấn đề khiến cột này có thể sắp xếp được, vì WordPress không bao gồm bất kỳ truy vấn thuế nào khi tất cả các định dạng được hiển thị.

// Add post format column.
add_action( 'manage_posts_columns', function( $columns ) {
    $screen = get_current_screen();
    if ( isset( $screen->post_type ) && in_array( $screen->post_type, array( 'post' ) ) ) {
        $columns['post_format'] = _( 'Post Format' );
    }
    return $columns;
} );

// Output post format in column.
add_action( 'manage_posts_custom_column' , function( $column, $post_id ) {
    switch( $column ) {
        case 'post_format':
            $format = get_post_format( $post_id );
            echo sprintf( '<a href="%s">%s</a>',
                add_query_arg( array( 'post_format' => $format ) ),
                __( ucfirst( $format ) ) );
            break;
    }
}, 10, 2 );

Cả phiên bản ngắn của định dạng, như được cung cấp bởi get_post_format()và đầu ra phiên bản dài theo wp_dropdown_categories(), dường như hoạt động theo cùng một cách khi lọc các bài đăng.


get_post_format()trả về trống khi định dạng bài đăng 'Tiêu chuẩn' mặc định được chọn. Bạn có thể xem xét việc thêm một kiểm tra sau chức năng đó để cột sẽ hiển thị 'Tiêu chuẩn' khi áp dụng. if ( empty( $format ) ) { $format = 'standard'; }
Terri Ann
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.