sourcetip

사용자가 Wordpress에서 게시물을 정렬할 수 있습니다.

fileupload 2023. 6. 22. 22:07
반응형

사용자가 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

반응형