태그 배열 정렬 문제
2012년 10월 25일 - 아직 해결되지 않았습니다!아래를 참조해 주세요.
클라이언트에는 [] 문자 및 일부 태그의 접두사가 포함된 WordPress Tag Cloud(태그 배열)가 있습니다.예:
"rose"
"autumn"
The Abby
The Cloud
The Elephant
따옴표 []에 둘러싸인 모든 태그는 목록 맨 위에 정렬되며 [The] 접두사로 시작하는 모든 단어는 문자 [T] 주위에 정렬됩니다(논리 ASC 순서에 따릅니다).
"모든 태그(WP 태그 클라우드 내)는 오름차순으로 정렬해야 하지만 ["" 또는 [더] 문자가 포함된 태그는 []와 [더] 접두사를 무시하고 다른 모든 태그와 연대순으로 정렬해야 합니다."라고 적혀 있었습니다.
WP의 핵심 기능을 조사했습니다.
**function wp_generate_tag_cloud**
어디서부터 시작해야 할지 모르겠어요.raw SQL 문에서는 trim()을 사용하여 태그 클라우드 어레이를 구성하는 [" "] 및 [the] 문자를 필터링할 수 있지만, 이는 적용 방법을 전혀 모르는 생각일 뿐입니다.
wp_generate_tag_cloud()는, 「필터」라고 하는 이름의 합니다.tag_cloud_sort는 에서 수 $args파라미터를 지정합니다.tag_cloud_sort하고, 의 「」를 수신합니다.$args된 wp_generate_tag_cloud()에 이 전체 할 수 wp_generate_tag_cloud()이치노
다음과 같은 작업을 수행할 수 있습니다.
function custom_tag_sort($tags, $args) {
if ($args['orderby'] != 'name') {
// do not reorder if sort order is not by name.
// wp_generate_tag_cloud() is smart enough to notice order
// is not changed and will proceed with its regular sort logic.
return $tags;
}
uasort($tags, 'custom_tag_sort_compare');
}
function custom_tag_sort_compare($a, $b) {
return strnatcasecmp(
custom_tag_sort_normalize($a->name),
custom_tag_sort_normalize($b->name)
);
}
function custom_tag_sort_normalize($tag) {
// strip quote marks
$tag = trim($tag, '"');
// strip leading definitive article
$tag = preg_replace('/^\s*the\s+/i', '', $tag);
return $tag;
}
add_filter('tag_cloud_sort', 'custom_tag_sort');
면책사항:저는 이 기능을 대충 점검한 후에 이 글을 썼습니다.실제 WordPress 설치에서 테스트하지 않았습니다. 샘플 태그 클라우드에서 정렬 기능이 제대로 작동하는지 확인했을 뿐입니다.
The Abby
"autumn"
The Cloud
The Elephant
"rose"
그럼 워드프레스의 핵심 코드를 수정하는 것을 피하고 싶은 거군요...고객이 업데이트 버튼을 누르지 말라고 한 후 다시 업데이트 버튼을 눌러야 합니다.대신 액션 훅을 사용합니다.태그 클라우드 기능을 위해 출력을 후크하기 위한 편리한 것이 있습니다.테마 함수 파일에 추가
function tagCloudFilter($tagCloudString, $args)
{
$tagCloudString = str_replace('The','', $tagCloudString);
$tagCloudString = str_replace('"','', $tagCloudString);
}
add_filter('wp_tag_cloud', 'tagCloudFilter', 10, 2);
그것은 적어도 당신이 원하지 않는 것들을 없앨 것이다. 그것을 분류하는 한, 나는 확실하지 않지만, 이것은 당신의 길을 갈 수 있을 것이다.그것을 jquery로 분류하는 것이 더 쉬울지도 모른다
코어 코드를 수정하려면 포맷하기 전에 태그 배열에서 foreach 루프를 실행하고 해당 루프에서 위에서 str_replaces를 사용합니다.그 배열에서 sort()만 실행하면 됩니다.하지만 나 같으면 워드프레스 코어를 수정하는 것보다 반쪽짜리 솔루션을 택하고 알파벳순으로 정렬하지 않을 것이다.
다음과 같은 생각이 있습니다.
원래 tag_cloud 함수를 복사하여 functions.functions에 직접 생성할 수 있습니다.
원하는 내용을 변경하고 함수 내부에 다음 필터를 추가합니다.
$return = apply_filters( 'YOUR_tag_cloud_function', $return, $args );
그런 다음 이전 필터를 생성하여 후크에 기능을 추가합니다.
add_filter('wp_tag_cloud', 'YOUR_tag_cloud_function');
효과가 있을지는 모르겠지만 테스트 안 해봤어요당신은 어떻게 생각하나요?
언급URL : https://stackoverflow.com/questions/13042100/tag-array-sorting-issue
'programing' 카테고리의 다른 글
| 웹 API 복합 매개 변수 속성이 모두 null입니다. (0) | 2023.02.28 |
|---|---|
| 타이프 스크립트에서 비동기 함수 유형을 정의하는 방법 (0) | 2023.02.28 |
| 그렇지 않으면 Angular에 있는 문JS 템플릿 (0) | 2023.02.28 |
| Java - 예외의 첫 번째 원인을 찾습니다. (0) | 2023.02.28 |
| JSON.parse vs. eval() (0) | 2023.02.28 |