주어진 문자로 시작하는 모든 게시물을 표시 하시겠습니까?


12

Wordpress 기반 사전을 작성하려고하는데 기본적으로 26 페이지 (각 문자마다 하나씩)가 있습니다.

ABC ... XYZ

모든 페이지에는 주어진 문자로 시작하는 모든 게시물이 표시되므로 "A"페이지를 연 후 다음과 같이 표시되어야합니다.

뒤로

주판

전복

(...) 푸른

처음에는 맞춤 게시물 유형에 대해 생각하고 있었지만 26 개의 맞춤 게시물 유형을 만들고 유지 관리하는 것은 지나친 것 같습니다.

이와 같이 게시물을 정렬하는 가장 효율적인 방법은 무엇입니까? PHP로 데이터베이스 쿼리, 분할 루프? 나는 1000의 게시물을 목표로하고 있습니다 (예, Wordpress이어야합니다 :)).

답변:


10

게시물 유형을 사용하지 말고 분류 용어를 사용하십시오!

저장시 게시물 제목의 첫 글자를 사용하여 AZ 분류법으로 오브젝트 용어를 설정하십시오. 일관성을 위해 대소 문자를 강제로 설정하십시오. 알파벳의 각 문자에 대한 용어와 숫자 및 기타 영숫자가 아닌 기호에 대한 용어를 작성하십시오.

이것은 각 게시물 제목의 첫 글자를 쿼리하는 것보다 빠르며 태그 클라우드 또는 용어 목록 위젯과 같이 더 많은 작업을 수행 할 수있는 분류법을 제공합니다! 또한 데이터베이스를 수동으로 계산하지 않고도 어떤 글에 어떤 글이 관련되어 있는지, 얼마나 많은 글이 있는지 결정하는 훨씬 빠른 방법이며, 표준 WordPress 용어 API를 사용하여 모음으로 시작하는 글과 같이 더 복잡한 쿼리를 수행 할 수 있습니다.


이것은 확실히 이상적인 길입니다. 그러나 수천 개의 게시물을 염두에 두십시오. 이것은 꽤 번거로운 작업이 될 수 있습니다. 알파벳의 각 문자로 시작하는 모든 게시물 을 처음에 쿼리 하고 알파벳의 각 문자와 일치하는 적절한 분류 용어로 각 게시물을 업데이트해야합니다. 그렇지 않으면 각 개별 게시물을 수동으로 업데이트하는 데 몇 세기 가 걸립니다.
Michael Ecklund

예, 그것은 거대한 단점입니다.이 게시물은 완전히 무지한 사람들 에 의해 추가 될 것이며 새로운 게시물을 작성하는 동안 올바른 분류 체계를 설정 하는 데는 믿을 수 없습니다. 누군가가 무언가를 편집 / 생성 할 때마다 모든 게시물을 쿼리하고 업데이트하는 것이 효율적인지 확실하지 않습니까?
Wordpressor

3
전혀 문제가되지 않습니다. UI를 숨기고 프로세스를 자동화하십시오. 저장 및 업데이트 포스트 훅에서 수동으로 수행하면 비용이 많이 듭니다
Tom J Nowell

톰 J 노웰, 그것은 마치 마법처럼 작동하지만 하나의 심각한 문제를 가지고 있고이를 관리하는 방법을 잘 모르겠어요 - 단어의 일부는 다음과 같은 글자로 시작됩니다 en.wikipedia.org/wiki/Ą - 난 이에 대한 용어를 설정할 수 없습니다. 다음은 코드와 설명입니다. pastebin.com/cHxbjVFH , 왜 그런 일이 발생합니까? 이 언어 전용 WP 팩을 사용하고 있습니다.
Wordpressor

악센트와 움라우트 등에 대해 이야기하고 있습니까? 그렇다면 그 자체로 완전히 새로운 질문을받을 자격이 있으며 사소한 질문이 아닙니다. 일반적인 PHP 질문 일 가능성이 높으므로 Stack Overflow가 가장 좋은 질문입니다.
Tom J Nowell

4

선호하는 분류법을 사용하지 않으려면 다음을 수행하십시오.

<ul class="posts">
         <?php 
         global $wpdb; 
         $request = "a" // could be any letter you want
         $results = $wpdb->get_results(
                "
                SELECT * FROM $wpdb->posts
                WHERE post_title LIKE '$request%'
                AND post_type = 'post'
                AND post_status = 'publish'; 
                "
         ); 
         if ( $results ) 
         {
            foreach ( $results as $post ) 
            {
                setup_postdata ( $post ); 
                ?> 
                <li>
                    ... loop stuff here (the_title, the_permalink) ... 
                </li>
                <?php 
            }
         } 
         else 
         {
            ?> 
            <div class="alert">No clubs found for that letter. Please try again, or use the search at the top.</div>
            <?php
         }
         ?>
    </ul>

이것이 어떻게 작동하는지 설명 할 수 있습니까? 편지가 포함 된 게시물을 반환하지 않습니까?
Tintinabulator Zea

그렇지 않습니다. mysql은 %를 와일드 카드로 사용합니다. 그러나 mysql 쿼리에서 $가 발생하지 않았습니다. 올바르게 읽어야합니다WHERE post_title LIKE 'request%'
brett

1

이 기사를 확인하십시오 : query_post 제목으로?

또는 PODS 2 프레임 워크를 사용하여 사전 저장 도우미를 만들고 일부 필드에 게시물 제목의 첫 글자를 저장하고 간단한 WHERE 조건을 사용할 수 있습니다.

또는 모든 글자로 드롭 다운 (다른 포드 / 콘텐츠 유형)을 만들고 기존 게시물 컨텐츠 유형 (팟 2에서 가능)과의 관계를 만듭니다. 따라서 사전 용어를 저장하기 전에 드롭 다운 상자에서이 용어에 할당 할 문자를 선택하십시오.

포드 2에서는 기존 게시물 컨텐츠 유형에 추가 필드를 추가 할 수 있습니다. Drupal 세계의 CCK + Views와 같은 플러그인 / 프레임 워크는 정말 훌륭합니다.

포드 2는 매우 유용한 플러그인입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.