사용자가 Wordpress에서 게시물을 정렬할 수 있습니다.
여러 가지 기준으로 게시물을 필터링할 수 있는 페이지를 만들고 싶습니다.
함께 일할 수 있습니다.wp_query
그리고 게시물을 꽤 쉽게 전달합니다. 제 문제는 사용자가 이 작업을 수행하도록 하는 방법을 온라인에서 찾을 수 없다는 것입니다.
예를 들어, 33개의 게시물로 가장 높은 가격(사용자 지정 필드 메타값) 순으로 게시물을 반환합니다.
<?php
$featuredPosts = new WP_Query( array(
'posts_per_page' => 33,
'meta_key'=>'Price',
'orderby' => 'meta_value_num',
'order' => DESC
) );
?>
<?php if ( $featuredPosts->have_posts() ) : ?>
<?php while ( $featuredPosts->have_posts() ) : $featuredPosts->the_post(); ?>
<article <?php post_class('item-post block'); ?> id="post-<?php the_ID(); ?>">
<h2 class="price-title"><?php the_title(); ?> </h2>
</article> <!-- end div post -->
<?php endwhile; wp_reset_query(); ?>
<?php endif; ?>
이제, 읽고 검색한 후에도 사용자가 게시물을 필터링할 수 있도록 프런트 엔드에서 이 기능을 어떻게 구현할 수 있는지 알아낼 수 있다면 정말 큰일입니다.
제 말은, 워드프레스의 URL에 추가하여 게시물의 순서를 변경할 수 있다는 것을 알지만, 이 맥락에서 저는 완전히 길을 잃었습니다.
저는 이것을 시도해 보았지만 작동하지 않습니다.
<?php
$by_price = esc_url(add_query_arg(array(
'meta_key' => 'price',
'orderby' => 'meta_value_num',
'order' => ASC
)));
$by_date = esc_url(add_query_arg(array(
'orderby' => 'date',
'order' => DESC
)));
?>
<ul>
<li><a href="<?php echo $by_price;?>">Order by price</a></li>
<li><a href="<?php echo $by_date;?>">Order by date</a></li>
</ul>
제가 달성하고자 하는 것은 실제로 매우 간단합니다. 사용자가 범주를 선택하고 가격 범위를 선택하고(JQuery에 값을 입력하여 필드에 값을 제공할 것으로 가정) 반환할 결과 수를 설정할 수 있습니다.
저는 이것을 위해 제가 생각할 수 있는 모든 것을 검색해 보았습니다. 주사위는 없습니다.
Simple Custom Post Order 플러그인을 사용해 보십시오.
그것은 AJAX와 자바스크립트를 사용하고 있기 때문에 다른 것을 로드할 필요가 없습니다.당신은 게시물을 드래그 앤 드롭하면 됩니다.
좋아요, 코드를 업데이트해서 확실히 해두겠습니다.
---meta_key가 자동 픽업이 될 것 같지는 않습니다.---
기능들.php
...
$whitList = array(
'price' => array(
'posts_per_page' => 33,
'meta_key'=>'price',
'orderby'=>'meta_value_num',
'order' => ASC
),
'date' => array(
'posts_per_page' => 33,
'orderby'=>'date',
'order' => DESC
)
);
...
첫 번째 루프 php:
<?php
gloabl $whitList; //to use the $whitList in your functions.php.
$aryQuery = $whitList[$_REQUEST['orderby']] ? $whitList[$_REQUEST['orderby']] : $whitList['price'];
$featuredPosts = new WP_Query( $aryQuery );
....
....
?>
목록 페이지의 경우:
<ul>
<?php
gloabl $whitList; //to use the $whitList in your functions.php.
foreach( $whitList as $orderby => $aryOrderBySettings){
?>
<li> <a href="<?php echo esc_url(add_query_arg('orderby', $orderby));?>">Order by <?php echo $orderby;?></a></li>
<?php
}
?>
</ul>
용사를 합니다.$_GET
매개 변수가 여기로 가는 방법입니다.우선 방문자가 이러한 변수에 액세스할 수 있도록 허용해야 합니다.링크 접근 방식은 전체적으로 괜찮으므로 현재 URL에 대한 추가 매개 변수를 사용하여 증강 링크를 생성할 수 있습니다.
<?php
$urla = add_query_arg( 'sort' => 'price', 'asc' => '1' );
$urld = add_query_arg( 'sort' => 'price', 'asc' => '0' );
?>
<a href="<?php echo esc_url( $url ); ?>">Sort by price (asc)</a>
<a href="<?php echo esc_url( $url ); ?>">Sort by price (desc)</a>
따라서 클릭하면 다음과 같이 태그가 지정된 변수를 감지할 수 있습니다.
<?php
// Get an allowed sort variable and the order
$sort = isset( $_GET['sort'] ) && in_array( $_GET['sort'], array( 'price' ) ) )
? $_GET['sort'] : null;
$order = isset( $_GET['asc'] ) && $_GET['asc'] == '0' ? 'DESC' : 'ASC';
?>
이제 방금 검색한 데이터로 기본 쿼리를 확장할 수 있습니다.페이지의 게시물을 쿼리하는 기본 방법을 사용하는 경우 권장되지는 않지만 사용할 수 있어야 합니다.사용자 지정 루프를 사용하는 경우 새 인수를 루프에 삽입하기만 하면 됩니다.
<?php
$args = array();
switch ( $sort ):
case 'price':
$args['order'] = $order;
$args['orderby'] = 'meta_value_num';
$args['meta_key'] = 'price';
break;
default:
break;
endswitch;
$defaults = array( 'posts_per_page' => 33 );
$query = new WP_Query( wp_parse_args( $args, $defaults ) );
?>
위의 기본 예제를 확장하기 위해 더 많은 URL과 버튼을 만들고 스위치 문에 더 많은 대소문자를 만들어 변수를 추가할 수 있습니다.
첫 번째 코드 조각은 단추를 표시할 위치로 이동합니다.두 번째 코드 조각은 세 번째 코드 조각보다 앞서며, 세 번째 코드 조각은 결과를 출력하기 전에 진행됩니다.
언급URL : https://stackoverflow.com/questions/20498204/let-users-sort-posts-in-wordpress
'sourcetip' 카테고리의 다른 글
VOLUME /tmp를 사용한 스프링 부트 및 도커 (0) | 2023.06.22 |
---|---|
Vuex 배열 항목 부울 값 전환 (0) | 2023.06.22 |
C 또는 C++에서 At 기호(@)와 달러 기호($)는 특별한 의미가 있습니까? (0) | 2023.06.22 |
Argparse를 사용하여 선택한 하위 명령 가져오기 (0) | 2023.06.17 |
-I dir vs. -I system dir (0) | 2023.06.17 |