【问题标题】:Can't get_posts() custom by category or tag无法按类别或标签自定义 get_posts()
【发布时间】:2016-03-10 10:06:44
【问题描述】:

我尝试按类别获取帖子,获取只有一个标签或类别的帖子(幻灯片)。 在我的 Wordpress 主题中,我有视差滑块,它使用自定义帖子类型滑块,并执行以下查询:

$args = array(     
    'post_type'        => 'slider',
    'posts_per_page'   => -1,
    'post_status'      => 'publish',
    'orderby'          => $orderby,
    'order'            => $order,
    'suppress_filters' => $suppress_filters
);
$slides = get_posts( $args );

这样我就可以通过这种帖子类型获得所有帖子。在此数据进入循环之后:

foreach( $slides as $k => $slide ) {



            $url                = get_post_meta($slide->ID, 'my_slider_url', true);
            $thumb_url          = wp_get_attachment_image_src( get_post_thumbnail_id($slide->ID), 'slider-thumb');
            $sl_image_url       = wp_get_attachment_image_src( get_post_thumbnail_id($slide->ID), 'full');
            $caption            = get_post_meta($slide->ID, 'my_slider_caption', true);

我创建标签和类别的分类:

function my_post_type_slider() {
    register_post_type( 'slider',
        array(
            'label'               => theme_locals("slides"),
            'singular_label'      => theme_locals("slides"),
            '_builtin'            => false,
            'exclude_from_search' => true, // Exclude from Search Results
            'capability_type'     => 'page',
            'public'              => true,
            'show_ui'             => true,
            'show_in_nav_menus'   => false,
            'taxonomies'          => 'slider_tag',
            'rewrite' => array(
                            'slug'       => 'slide-view',
                            'with_front' => FALSE,
                        ),
            'query_var' => 'slider', // This goes to the WP_Query schema
            'menu_icon' => ( version_compare( $GLOBALS['wp_version'], '3.8', '>=' ) ) ? 'dashicons-slides' : PARENT_URL . '/includes/images/icon_slides.png',
            'supports'  => array(
                                'title',
                                'thumbnail',
                                'page-attributes',
                            )
        )
    );

    register_taxonomy(
        'slider_category',
        'slider',
        array(
            'hierarchical'  => true,
            'label'         => theme_locals("categories"),
            'singular_name' => theme_locals("category"),
            'rewrite'       => true,
            'query_var'     => true
        )
   );


    register_taxonomy(
        'slider_tag',
        'slider',
        array(
            'hierarchical'  => false,
            'label'         => theme_locals("tags"),
            'singular_name' => theme_locals("tag"),
            'rewrite'       => true,
            'query_var'     => true
        )
    );
}

add_action('init', 'my_post_type_slider');'

关于分类,我可以在管理面板中查看和使用它 - 我是这样检查的:

$category = get_terms( 'slider_category', $args ); print_r ($tags); 

我可以得到:

Array ( 
    [0] => WP_Term Object ( 
        [term_id] => 46 
        [name] => 123 
        [slug] => 123 
        [term_group] => 0 
        [term_taxonomy_id] => 46 
        [taxonomy] => slider_category 
        [description] => 
        [parent] => 0 
        [count] => 3 
        [filter] => raw 
    ) 
)

但后来我尝试在带有 args (category_name=>'nameofcat' or tag=>'tagname') 或其他选项的 get_posts 中使用它,我得到空的 $slides... 我也尝试使用'tax-query',但仍然无法得到任何结果......

 $args = array( 'tax_query'     => array(
    array(
        'taxonomy'  => 'slider_tag',
        'field'     => 'names',
        'terms'     => $slug_name,
    ),),
'posts_per_page'   => -1,
'post_status'      => 'publish',
'orderby'          => $orderby,
'order'            => $order,
'suppress_filters' => $suppress_filters
                                         );

我可以使用 get_posts 通过 cat/tag 获取一些幻灯片数据吗? 我知道我可以使用全局 WP_query 但这也没什么用,因为我需要重写周期。

【问题讨论】:

  • 您必须使用tax_query,类别和标签参数将不起作用
  • 我尝试使用 'tax_query',但没有任何效果 - 只是得到空 var ($slides) $args = array( 'tax_query' => array( array( 'taxonomy' = > 'slider_tag', 'field' => 'names', 'terms' => $slug_name, ),), // 'post_type' => 'slider', 'posts_per_page' => -1, 'post_status' => 'publish', 'orderby' => $orderby, 'order' => $order, 'suppress_filters' => $suppress_filters );
  • 添加到正文,tax_query 代码块块以便于阅读
  • 谢谢!你让我走对了!

标签: php wordpress wordpress-theming


【解决方案1】:

我对@9​​87654321@ 或tax_query 的查询有误。

这是正常的代码:

$args = array(
    'numberposts' => -1,
    'post_type'   => 'slider',
    'exclude'     => $the_id,
    'tax_query'   => array( 
        array(
            'taxonomy' => 'slider_tag',
            'field'    => 'slug',
            'terms'    => $slug_name,
        )
    )
);  
$slides = get_posts( $args );

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-19
    • 2014-01-12
    相关资源
    最近更新 更多