워드프레스:위젯 $args 내에서 할당된 게시 ID를 제외하는 사용자 지정 루프
위젯 등록 완료function.php
정의된 post_id 메타를 표시합니다.
class featured_widget extends WP_Widget
{
/**
* Display front-end contents.
*/
function widget($args, $instance)
{
$post = get_post($instance['post_id']);
...
}
}
할당된 것을 제외합니다.post_id
의$post
내 루프에서:
if (have_posts()) : while (have_posts()) : the_post();
1. 의 입수방법post_id
가치?
WordPress는 옵션테이블에 위젯 데이터를 저장합니다.option_name
이widget_{$id_base}
예를 들어 다음과 같은 위젯을 작성하는 경우:
function __construct() {
parent::__construct('so37244516-widget',
__('A label', 'text-domain'), [
'classname' => 'so37244516-widget-class',
'description' => __('Some descriptions', 'text-domain')
]);
}
그option_name
그래야 한다widget_so37244516-widget
위젯 데이터를 가져오려면 다음을 사용해야 합니다.
$data = get_option('widget_so37244516-widget');
그러나 위젯에는 여러 인스턴스가 있을 수 있기 때문에$data
는 예측할 수 없는 키를 가진 관련 배열입니다(위젯을 사이드바에 끌어다 저장할 때마다 위젯의 새 인스턴스가 반환됩니다).
따라서 사이트 전체에 위젯 인스턴스가 하나만 있는 경우$data[2]['post_id']
우리가 필요로 하는 가치입니다.인스턴스가 여러 개 있는 경우 루프를 통해$data
몇 가지 키와 값을 비교하여 올바른 키를 찾습니다.늘 그렇듯이var_dump($data)
많은 도움이 됩니다.
2. 의 직책은 제외한다.post_id
루프를 통과합니다.
가정하다$exclude_id
1단계에서 얻은 값입니다.
- 커스텀 루프를 실행하고 있는 경우는, @hemnath_mouli 의 메서드를 사용합니다.
$query = new WP_Query([
'post__not_in' => [$exclude_id]
]);
if ( $query->have_posts() ) :
while ( $query->have_posts() ) : $query->the_post();
// Do loop.
endwhile;
wp_reset_query(); // Must have.
else :
// Do something.
endif;
잊지 말고 해 주세요wp_reset_query()
.
- 디폴트 루프를 사용하고 있는 경우는, @Deepti_chipdey 의 메서드를 사용해 주세요.
functions.php
:
add_action('pre_get_posts', function($query)
{
if ( $query->is_home() && $query->is_main_query() ) {
$query->set('post__not_in', [$exclude_id]);
}
});
꼭 변경해주세요is_home()
원하는 페이지로 이동합니다.
pre-get posts 훅을 사용해야 합니다.
Tyr 이 코드
function exclude_single_posts_home($query) {
if ($query->is_home() && $query->is_main_query()) {
$query->set('post__not_in', array($post));
}
}
add_action('pre_get_posts', 'exclude_single_posts_home');
투고를 제외하려면 다음 명령을 사용해야 합니다.post__not_in
WP_Query에서
$post = new WP_Query( array( 'post__not_in' => array( $exclude_ids ) ) );
이게 도움이 됐으면 좋겠어!
1개의 투고를 제외하는 경우는, 상기의 순서에 따릅니다.
단, post id를 별도로 부여하지 않는 한, 카테고리에서 제외시키고 싶은 모든 게시물을 간단한 방법으로만 만듭니다.
일부 카테고리에서 투고 제외
<?php $query = new WP_Query( 'cat=-3,-8' ); ?>// 3 and 8 are category id
상세한 예
<?php $query = new WP_Query( 'cat=-3,-8' ); ?>
<?php if ( $query->have_posts() ) : while ( $query->have_posts() ) : $query->the_post(); ?>
<div class="post">
<!-- Display the Title as a link to the Post's permalink. -->
<h2><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></h2>
<!-- Display the date (November 16th, 2009 format) and a link to other posts by this posts author. -->
<small><?php the_time( 'F jS, Y' ); ?> by <?php the_author_posts_link(); ?></small>
<div class="entry">
<?php the_content(); ?>
</div>
<p class="postmetadata"><?php _e( 'Posted in' ); ?> <?php the_category( ', ' ); ?></p>
</div> <!-- closes the first div box -->
<?php endwhile;
wp_reset_postdata();
else : ?>
<p><?php _e( 'Sorry, no posts matched your criteria.' ); ?></p>
<?php endif; ?>
참조 링크:클릭해주세요
언급URL : https://stackoverflow.com/questions/37244516/wordpress-custom-loop-to-exclude-post-id-assigned-within-widget-args
'programing' 카테고리의 다른 글
string에서 float64로 변환 유형을 사용하여 JSON을 디코딩하는 방법 (0) | 2023.03.08 |
---|---|
Angular Material의 md-icon 색상을 변경하려면 어떻게 해야 합니까? (0) | 2023.03.08 |
외부 js 함수에서 AngularJS 액세스 범위 (0) | 2023.03.08 |
JSON 파일에서 TAB을 구문 분석할 수 없습니다. (0) | 2023.03.08 |
Angularjs가 트랜스코프 및 바인딩을 분리하여 혼란스러워함 (0) | 2023.03.08 |