【发布时间】: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