분류법 페이지에 태그 표시
현재 CMS에 커스텀 투고 타입의 싱글 페이지에 태그를 추가하는 옵션이 있습니다.
이제 이 태그를 '특징' 아이템으로 표시하고 싶습니다.따라서 my taxonomy-'filename'에서는 태그를 수집하여 taxonomy 페이지에 표시하는 다음 코드를 사용합니다.
<?php
$args = array(
'tag_slug__and' => array('sector1'),
'post_type' => array( 'sectors' )
);
$loop = new WP_Query( $args );
while ($loop->have_posts() ) : $loop->the_post();
?>
<a href="<?php echo get_permalink(); ?>">
<?php echo "<div class='col-md-6' style='margin-bottom:20px;'>"; ?>
<div class="row mobilemargin">
<div class="categorytiletextsector1">
<div class="col-md-6 col-sm-6 col-xs-12 nopr"><?php echo get_the_post_thumbnail( $page->ID, 'categoryimage', array('class' => 'sector1img hovereffect')); ?> </div>
<div class="col-md-6 col-sm-6 col-xs-12">
<div class="testdiv">
<h5><?php the_title(); ?></h5>
<p><?php the_excerpt(); ?></p>
</div>
</div>
</div>
</div>
<?php echo "</div>"; ?>
</a>
<?php endwhile; ?>
<?php wp_reset_query(); ?>
여기서 문제가 되는 것은 택사노미 페이지에서 설정된 대로 선택한 태그가 모든 카테고리 페이지에 표시됩니다.
현재 카테고리로만 설정하려면 어떻게 해야 합니까?
제 아이템이 '카테고리 A'에 있으면 'A' 카테고리 페이지만 아이템 카테고리를 사용하여 표시됩니까?
어떤 도움이라도 좋습니다
편집. 이 코드가 작동하길 바라며 사용했지만, 운이 없었습니다.
$args = array(
'tag_slug__and' => array( 'sector1' ),
'post_type' => array( 'sectors' ),
'tax_query' => array(
array(
'taxonomy' => 'sectors',
'terms' => get_queried_object_id(),
),
),
);
문제는 커스텀 쿼리입니다.여기서 한 가지 매우 중요한 점은 절대 변경하지 말고 모든 유형의 아카이브 페이지 또는 홈 페이지에서 기본 쿼리를 사용자 지정 쿼리로 바꾸라는 것입니다.저는 최근에 이 게시물에 모든 것을 자세히 설명했습니다.꼭 읽어보시고 링크된 모든 게시물을 읽어보시기 바랍니다.이것이 당신에게 많은 도움이 될 것입니다.
커스텀 쿼리를 삭제하고 이를 기본 루프로 대체하는 것이 해결책입니다.
if ( have_posts() ) {
while ( have_posts() ) {
the_post();
// Your template tags and html mark up
}
}
기본 쿼리에서 변경해야 할 사항이 있는 경우pre_get_posts
그렇게 하기 위해서
편집
여기서 가장 좋은 생각은 풀로 사용하는 것입니다.tax_query
선택한 분류법 용어 및 태그에 있는 게시물을 표시하려면
다음과 같은 방법을 사용할 수 있습니다. (최소한 PHP 5.4+가 필요합니다. 또, 이것은 테스트되지 않았습니다.)
$q = get_queried_object();
$args = [
'post_type' => 'sectors',
'tax_query' => [
[
'taxonomy' => $q->taxonomy,
'terms' => $q->term_id,
'include_children' => false // Exclude child terms
],
[
'taxonomy' => 'post_tag',
'field' => 'slug',
'terms' => 'sector1', //I believe this is the slug
],
],
];
이전 버전의 PHP의 경우 다음을 사용하십시오.
$q = get_queried_object();
$args = array(
'post_type' => 'sectors',
'tax_query' => array(
array(
'taxonomy' => $q->taxonomy,
'terms' => $q->term_id,
'include_children' => false // Exclude child terms
),
array(
'taxonomy' => 'post_tag',
'field' => 'slug',
'terms' => 'sector1', //I believe this is the slug
),
),
);
편집 2
에 있는 투고를 제외하려면sector1
태그 및 기타sectorX
태그, 다음 작업을 수행할 수 있습니다.
다음과 같은 방법을 사용할 수 있습니다. (최소한 PHP 5.4+가 필요합니다. 또, 이것은 테스트되지 않았습니다.)
$q = get_queried_object();
$args = [
'post_type' => 'sectors',
'tax_query' => [
[
'taxonomy' => $q->taxonomy,
'terms' => $q->term_id,
'include_children' => false // Exclude child terms
],
[
'taxonomy' => 'post_tag',
'field' => 'slug',
'terms' => 'sector1', //I believe this is the slug
'operator' => 'NOT_IN'
],
],
];
이전 버전의 PHP의 경우 다음을 사용하십시오.
$q = get_queried_object();
$args = array(
'post_type' => 'sectors',
'tax_query' => array(
array(
'taxonomy' => $q->taxonomy,
'terms' => $q->term_id,
'include_children' => false // Exclude child terms
),
array(
'taxonomy' => 'post_tag',
'field' => 'slug',
'terms' => 'sector1', //I believe this is the slug
'operator' => 'NOT_IN'
),
),
);
태그 배열은 에 전달할 수 있습니다.terms
이와 같은 파라미터
'terms' => array( 'sector1', 'sector2', 'etc' ),
또는 쇼트 어레이 구문
'terms' => ['sector1', 'sector2', 'etc'],
편집 3
이것이 메인 쿼리이기 때문에 몇 가지 변경이 필요합니다.말씀드렸듯이 커스텀 쿼리를 삭제합니다.주루프는 이렇게 생겼어야 합니다.
<?php if (have_posts()) : ?>
<?php while (have_posts()) : the_post(); ?>
<a href="<?php echo get_permalink(); ?>">
<?php echo "<div class='col-md-6 col-sm-6 col-xs-12' style='margin-bottom:30px;'>"; ?>
<div class="row mobilemargin">
<div class="categorytiletext2">
<div class="col-md-6 col-sm-12 col-xs-12 nopr"><?php echo get_the_post_thumbnail( $page->ID, 'categoryimage', array('class' => 'hovereffect newimgheight')); ?> </div>
<div class="col-md-6 col-sm-12 col-xs-12 mobilewhite">
<div class="testdiv">
<h5 class="captext"><?php the_title(); ?></h5>
<?php $trimexcerpt = get_the_excerpt();
$shortexcerpt = wp_trim_words( $trimexcerpt, $num_words = 10, $more = '… ' );
echo '<a href="' . get_permalink() . '"><p>' . $shortexcerpt . '</p></a>';
?>
</div>
</div>
</div>
</div>
<?php echo "</div>"; ?>
</a>
<!-- If there is no posts, display an error message -->
<?php endwhile;
else: ?>
<p><?php _e('Sorry, no posts matched your criteria.'); ?></p>
<?php endif; ?>
<!-- If there is no posts, display an error message -->
이제 를 사용할 수 있습니다.pre_get_posts
분류법 페이지에서 원하는 태그를 제거합니다.functions.php에서 다음을 수행합니다(PHP 5.3+가 필요하며 테스트되지 않았습니다).
add_action( 'pre_get_posts', function ( $q )
{
if ( !is_admin() && $q->is_main_query() && $q->is_tax() ) {
$q->set( 'tag__not_in', array( 145 ) );
}
});
이전 버전의 경우 를 사용합니다.
add_action( 'pre_get_posts', 'so30256167_remove_tags' );
function so30256167_remove_tags( $q )
{
if ( !is_admin() && $q->is_main_query() && $q->is_tax() ) {
$q->set( 'tag__not_in', array( 145 ) );
}
}
옷 갈아입는 거 잊지 마145
정확한 태그 ID 또는 태그 ID 배열로 이동합니다.
편집 4
ID 는, 「ID」를 사용할 수 .get_term_by()
태그 슬러그에서 태그 ID를 얻을 수 있습니다.다음과 같은 기능이 있습니다. (PHP 5.3+가 필요하며 테스트되지 않음)
add_action( 'pre_get_posts', function ( $q )
{
if ( !is_admin() && $q->is_main_query() && $q->is_tax() ) {
$tag_object = get_term_by( 'slug', 'sector1', 'post_tag' );
$tagID = $tag_object->term_id;
$q->set( 'tag__not_in', array( $tagID ) );
}
});
이전 버전의 경우 를 사용합니다.
add_action( 'pre_get_posts', 'so30256167_remove_tags' );
function so30256167_remove_tags( $q )
{
if ( !is_admin() && $q->is_main_query() && $q->is_tax() ) {
$tag_object = get_term_by( 'slug', 'sector1', 'post_tag' );
$tagID = $tag_object->term_id;
$q->set( 'tag__not_in', array( $tagID ) );
}
}
태그 슬러그의 배열이 있는 경우 다음을 교체할 수 있습니다.
$tag_object = get_term_by( 'slug', 'sector1', 'post_tag' );
$tagID = $tag_object->term_id;
$q->set( 'tag__not_in', array( $tagID ) );/*
와 함께
$tag_array = array( 'slug1', 'slug2', 'slug3' );
foreach ( $tag_array as $tag ) {
$tag_object = get_term_by( 'slug', $tag, 'post_tag' );
$tagids[] = $tag_object->term_id;
}
$q->set( 'tag__not_in', $tagids );
거기에 맞춰 슬러그만 갈아 끼우면 돼
편집 5
php를 사용하여 php를 pre_get_posts
한다
add_action( 'pre_get_posts', 'so30256167_remove_tags' );
function so30256167_remove_tags( $q )
{
if ( !is_admin() && $q->is_main_query() && $q->is_tax() ) {
$tag_array = array( 'sector1', 'sector2', 'sector3', 'sector4' );
foreach ( $tag_array as $tag ) {
$tag_object = get_term_by( 'slug', $tag, 'post_tag' );
$tagids[] = $tag_object->term_id;
}
$q->set( 'tag__not_in', $tagids );
}
}
언급URL : https://stackoverflow.com/questions/30256167/displaying-tags-on-taxonomy-page
'programing' 카테고리의 다른 글
angular: 모델의 부울 값을 기반으로 버튼 텍스트를 전환합니다. (0) | 2023.03.16 |
---|---|
React Faux DOM을 사용하여 D3 그룹화된 막대 차트에서 직사각형을 렌더링하려면 어떻게 해야 합니까? (0) | 2023.03.16 |
여러 JSON 레코드를 Panda 데이터 프레임으로 읽기 (0) | 2023.03.16 |
react를 사용하여 HTML5 데이터 속성을 동적으로 설정하려면 어떻게 해야 합니까? (0) | 2023.03.16 |
같은 요소를 가진 두 JSON 개체를 다른 순서로 비교하려면 어떻게 해야 합니까? (0) | 2023.03.16 |