Cum să creezi o sortare personalizată pentru categoriile WordPress

7 aug. 2013, 22:18:45
Vizualizări: 47.1K
Voturi: 7

Am această problemă pe care o întâmpin. Încerc să sortez categoriile pentru a le afișa în ordinea în care le doresc. Am citit documentația WordPress despre toate opțiunile de sortare. Cu toate acestea, nu există nicio indicație despre cum să aleg categoriile și să le fac să curgă în modul dorit.

Iată ce prezintă Codex-ul:

orderby (string) Sortează categoriile alfabetic sau după ID-ul unic al categoriei. Implicit se sortează după ID-ul Categoriei. Valori valide:
- id
- name - implicit
- slug
- count
- term_group

order (string) Ordinea de sortare pentru categorii (fie ascendentă sau descendentă). Implicit este ascendentă. Valori valide:
- asc - implicit
- desc

Cu toate acestea, după cum am spus, acest lucru nu mă ajută pentru că am nevoie să le afișez în ordinea pe care o aleg eu.

Iată codul pe care îl implementez în acest moment. Care este în ordinea în care vreau să le afișez.

<?php
$args = array(
'orderby' => 'ID',
'order' => 'ASC',
'include' => '5,6,7,8,29,9,10,11,12,13,14,15,16'
);
$categories = get_categories($args);
foreach($categories as $category) {
echo '<li><a href="' . get_category_link( $category->term_id ) . '" title="' . sprintf( __( "Vezi toate postările din %s" ), $category->name ) . '" ' . '>' . $category->name . '</a>' . ' ' . '(' . $category->count . ')' . '</li> ';
}
?>
3
Comentarii

Acest post ar putea fi util http://www.wphub.com/sorting-categories-custom-sort-order/

Srikanth AD Srikanth AD
7 aug. 2013 22:30:59

Mulțumesc pentru link. L-am verificat, dar pare a fi multă muncă și nu doresc să folosesc un plugin. Totuși, îți mulțumesc foarte mult pentru răspunsul rapid. Sunt foarte recunoscător pentru timpul acordat în încercarea de a mă ajuta.

Wayne Hatter Jr. Wayne Hatter Jr.
7 aug. 2013 22:56:58

Acesta ar putea fi util. Deși este pentru articole, a doua soluție ar putea fi relevantă pentru tine, deoarece folosește PHP și array.

Sisir Sisir
7 aug. 2013 23:01:40
Toate răspunsurile la întrebare 3
0

Dacă deja folosești Advanced Custom Fields (și ar trebui să o faci!), poți crea un câmp de ordine pentru categoriile tale prin care să le setezi manual în ordine numerică.

Apoi, tot ce trebuie să faci este:

$categories = get_categories( $args );  

usort($categories, function($a, $b) {
   return get_field("category_order", "category_".$a->term_id) - get_field("category_order", "category_".$b->term_id);
});

foreach ($categories as $category){
...

Unde category_order este numele câmpului pe care l-ai creat cu ACF.

Notă: Folosind metoda PHP 5.3 pentru usort.

3 ian. 2014 09:03:58
1

Bine, am găsit acest plugin care face exact ce îmi doresc. Nu voiam să folosesc un plugin, dar acesta pare destul de ușor și își face treaba perfect. http://wordpress.org/plugins/taxonomy-terms-order/

7 aug. 2013 23:42:54
Comentarii

Începând cu 2021-07-19, acesta nu reflectă ordinea de sortare dorită pe front-end. Folosind WordPress 5.7.2 cu tema Twenty Twenty One în configurația implicită

klewis klewis
19 iul. 2021 23:20:50
1

Codul original va funcționa dacă schimbi argumentele în: 'orderby' => 'include'

$args = array(
    'orderby' => 'include',
    'order' => 'ASC',
    'include' => '5,6,7,8,29,9,10,11,12,13,14,15,16'
);
$categories = get_categories($args);
foreach($categories as $category) {
    echo '<li><a href="' . get_category_link( $category->term_id ) . '" title="' . sprintf(     __( "Vezi toate articolele din %s" ), $category->name ) . '" ' . '>' . $category->name . '</a>' . ' ' . '(' . $category->count . ')' . '</li> ';
}
18 oct. 2019 18:44:29
Comentarii

da, merge pentru mine :)

Nuno Sarmento Nuno Sarmento
5 aug. 2020 18:58:29