我的博客文章结构化,具有类别,这些类别的标签与某些自定义帖子标题相同。
我想使用这些匹配的子标签来运行从帖子到自定义帖子页面的链接。
在single.php中,我正在尝试运行此代码...但是,不是返回自定义帖子的信息,而是返回当前帖子的信息
<?php
$categories = get_the_category();
if ( ! empty( $categories ) ) {
foreach( $categories as $category ) {
$current_slug = $category->slug;
$args = array(
'post_type' => 'community',
'name' => $current_slug
);
$cat_query = new WP_Query($args);
if ( $cat_query->have_posts() ) {
the_title( sprintf( '<h3 class="post-title"><a href="%s" rel="bookmark">', esc_url( get_permalink() ) ), '</a></h3>');
wp_reset_postdata();
}
}
}
?>
我对这段代码的希望是->如果某条帖子的类别为“ cat-one”,则该帖子的顶部将是指向CAT ONE页面的链接(这是自定义帖子类型)网址为.... / communities / cat-one的页面。
答案 0 :(得分:0)
这绝对有可能。但是,您的代码有一些问题,我还清理了其他一些东西。
您已经设置了循环浏览类别的代码,但是您在name
参数中使用了WP_Query()
,并且没有为结果设置循环。根据{{3}}文档,name
将返回一个帖子-如果您想要多个,(自WP 4.4起),您可以改用post_name__in
。另外,代码的最大问题是,您永远不会在$cat_query
内设置内部变量。我还添加了一个while
循环,因此它将吐出多个类别链接。
如果不使用WP_Query()
方法定义内部变量(或将$post_id
参数传递给它们),则$query->the_post()
和the_title()
之类的post变量函数将使用当前发布,这就是您现在看到的内容。
这应该使您入门:
if( $categories = get_the_category() ){
foreach( $categories as $category ){
$args = array(
'post_type' => 'community',
'post_name__in' => $category->slug
);
$cat_query = new WP_Query( $args );
if( $cat_query->have_posts() ){
while( $cat_query->have_posts() ){
$cat_query->the_post();
the_title( sprintf( '<h3 class="post-title"><a href="%s" rel="bookmark">', esc_url( get_permalink() ) ), '</a></h3>');
}
wp_reset_postdata();
}
}
}