【WordPress-按条项列出的自定义帖子类型的自定义分类页面】我有一个taxonomy-taxonomy.php页面, 需要如下所示:
自定义帖子类型标题(资源)
自定义分类法1(资源类型)
资源类型第1条款(白皮书)
- 白皮书发布1
白皮书发布2
白皮书发布3
- 影片发布1
影片发布2
影片发布3
#1不必将对象转换为数组, 可以轻松处理对象。好奇(至少对我而言)是, 你得到这样的东西:
Array
(
[0] =>
stdClass Object
(
[term_id] =>
7
[name] =>
Magister comunicaciones aplicadas
[slug] =>
magister-comunicaciones-aplicadas
[term_group] =>
0
[term_taxonomy_id] =>
7
[taxonomy] =>
linea-de-estudio
[description] =>
[parent] =>
0
[count] =>
4
)[1] =>
stdClass Object
(
[term_id] =>
8
[name] =>
Engagement marketing
[slug] =>
engagement-marketing
[term_group] =>
0
[term_taxonomy_id] =>
8
[taxonomy] =>
linea-de-estudio
[description] =>
[parent] =>
0
[count] =>
5
)
)
它基本上是一个对象数组, 因此你必须以这种方式对待它们。例如, 如果我想要第一个的名称:
$myterms = get_terms('taxonomy-name', 'orderby=none&
hide_empty');
echo$myterms[0]->
name;
如果需要遍历元素, 则仍然可以使用foreach(); 。
foreach ($myterms as $term) { ?>
<
li>
<
a href="http://www.srcmini.com/<
?php echo $term->
slug;
?>">
<
?php echo $term->
name;
?>
<
/a>
<
/li>
<
?php
} ?>
这样, 你可以发布分类法中的文章。
对于自定义帖子类型, 你必须创建一个像这样的循环:
$args = array(
'post_type' =>
'post-type-name', 'taxonomy' =>
'term'
//for example
//'resources' =>
'videos'
);
//assigning variables to the loop
global $wp_query;
$wp_query = new WP_Query($args);
// starting loop
while ($wp_query->
have_posts()) : $wp_query->
the_post();
the_title();
blabla....endwhile;
然后, 你可以为每个分类/术语创建多个循环:)。
如果你想花更多的时间(不想重复一百遍), 可以将第二个循环包含在第一个循环中, 并为分类法(资源即资源)及其术语(视频)分配变量(来自你的示例仅是最后一个)。这个想法是, 你将有一个普通的(典型的)wordpress循环, 该循环仅限于自定义的post-type和每个术语。
foreach ($myterms as $term) : ?>
<
li>
<
a href="http://www.srcmini.com/<
?php echo $term->
slug;
?>">
<
?php echo $term->
name;
?>
<
/a>
<
/li>
<
?php$term_name = $term->
slug;
$args = array(
'post_type' =>
'post-type-name', 'taxonomy' =>
"$term_name"
);
//assigning variables to the loop
global $wp_query;
$wp_query = new WP_Query($args);
// starting loop posting only
while ($wp_query->
have_posts()) : $wp_query->
the_post();
the_title();
blabla....endwhile;
endforeach;
?>
显然, 你也可以做相反的事情, 为单模板自定义类型创建正常循环(看起来你只有一个), 并且内部包含所有自定义术语。
不是很优雅, 但这是我想出它的最佳方法:P。希望有人能理解这一点, 听起来令人困惑。
也许可以使用某些回调函数?
#2嘿manon1165, 我实际上刚刚完成。非常痛苦, 希望我的代码段能对你有所帮助!
我做了一个自定义页面模板。并且做了一些类似的事情
<
?php $categories = get_terms('taxonomy-name', 'orderby=name&
hide_empty=0');
$cats = object_to_array($categories);
?>
现在, 只需print_r($ cats), 你将看到类别的数组。
你需要将对象转换为数组, 我这样做是。
function object_to_array($data)
{
if(is_array($data) || is_object($data))
{
$result = array();
foreach($data as $key =>
$value)
{
$result[$key] = object_to_array($value);
}
return $result;
}
return $data;
}
我做了
<
ul id="cat-list">
<
?php foreach($cats as $cat) { ?>
<
li>
<
a href="http://www.srcmini.com/taxonomy-name/<
?php echo $cat['slug'];
?>
">
<
?php echo $cat['name'];
?>
(<
?php echo $cat['count'];
?>
)<
/a>
<
br>
<
?php echo $cat['description'];
?>
<
/li>
<
?php } ?>
<
/ul>
希望有帮助!
#3这对我来说很好:-
<
?php
$custom_terms = get_terms('custom_taxonomy');
foreach($custom_terms as $custom_term) {
wp_reset_query();
$args = array('post_type' =>
'custom_post_type', 'tax_query' =>
array(
array(
'taxonomy' =>
'custom_taxonomy', 'field' =>
'slug', 'terms' =>
$custom_term->
slug, ), ), );
$loop = new WP_Query($args);
if($loop->
have_posts()) {
echo '<
h2>
'.$custom_term->
name.'<
/h2>
';
while($loop->
have_posts()) : $loop->
the_post();
echo '<
a href="'.get_permalink().'">
'.get_the_title().'<
/a>
<
br>
';
endwhile;
}
}
>
?
推荐阅读
- WordPress自定义主题未出现在仪表板中
- WordPress的-自定义分类-没有归档
- WordPress自定义logo未在所有页面上显示
- 每个用户的WordPress自定义链接
- 以太网链路聚合和VRRP
- 技术分享| 音视频多频道使用的正确姿势
- HarmonyOS 基础之 UI组件
- “不出户,知天下”,3D可视化的智慧应用
- VRRP实验