Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Sortowanie tabeli po drugim wyrazie (nazwisko), Wordpress
Booster
post
Post #1





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 24.06.2013
Skąd: Lublin

Ostrzeżenie: (0%)
-----


Witam,
mam taki problem znalazłem gdzieś na internecie coś takiego
  1. function get_last_name($name) {
  2. return substr($name, strrpos($name, ' ') + 1);
  3. }
  4. function last_name_compare($a, $b) {
  5. return strcmp(get_last_name($a), get_last_name($b));
  6. }
  7.  
  8. function autorzy_lista() {
  9. usort($name, "last_name_compare");
  10. }
  11.  
  12. add_shortcode( 'autorzy_lista', 'autorzy_lista' );


Uruchamiam to shortcodem i wyświetla mi błąd

Warning: usort() expects parameter 1 to be array, null given in /home/public_html/wp-content/themes/segregacja/functions.php on line 894


Zbytnio się nie znam. gdy ustawiłem opcję sorotwania taką
  1. function contributors() {
  2. wp_list_authors('show_fullname=1&orderby=name&exclude_admin=1&exclude=');
  3. }
  4. add_shortcode( 'spis', 'contributors' );

która odwołuje się do tej
  1. function wp_list_authors( $args = '' ) {
  2. global $wpdb;
  3.  
  4. $defaults = array(
  5. 'orderby' => 'name', 'order' => 'ASC', 'number' => '',
  6. 'optioncount' => false, 'exclude_admin' => true,
  7. 'show_fullname' => false, 'hide_empty' => true,
  8. 'feed' => '', 'feed_image' => '', 'feed_type' => '', 'echo' => true,
  9. 'style' => 'list', 'html' => true, 'exclude' => '', 'include' => ''
  10. );


I wolał bym tej nie ruszać bo ona jest w silniku wp a zrobić nową tylko tamta wyświetla błąd :/ czy może mi ktoś pomóc albo nakierować ? ew może inne sortowanie
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 8)
Turson
post
Post #2





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

Ostrzeżenie: (0%)
-----


  1. function autorzy_lista() {
  2. usort($name, "last_name_compare");
  3. }

przekaż $name jako argument funkcji
Go to the top of the page
+Quote Post
Booster
post
Post #3





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 24.06.2013
Skąd: Lublin

Ostrzeżenie: (0%)
-----


Zbytnio nie rozumiem ... nie znam tyle php chodzi o cos takiego ?
  1. usort($name,array("last_name_compare"));

tylko że na tym nie działa
Go to the top of the page
+Quote Post
Turson
post
Post #4





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

Ostrzeżenie: (0%)
-----


Ma być
  1. function autorzy_lista($name) {
  2. usort($name, "last_name_compare");
  3. }

albo użyjesz global
Go to the top of the page
+Quote Post
lukasz_os
post
Post #5





Grupa: Zarejestrowani
Postów: 203
Pomógł: 55
Dołączył: 23.11.2008
Skąd: UKF

Ostrzeżenie: (0%)
-----


Nie namawiaj do globali... Jak już pomagasz to rób to z głową. Potem się dziwisz że dostajesz kod spaghetti biggrin.gif


--------------------
Pomagam jeśli mam czas oraz jak się na tym znam :D
Go to the top of the page
+Quote Post
Turson
post
Post #6





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

Ostrzeżenie: (0%)
-----


Namawiam do argumentu, a global jako gorsza alternatywa.
Go to the top of the page
+Quote Post
lukasz_os
post
Post #7





Grupa: Zarejestrowani
Postów: 203
Pomógł: 55
Dołączył: 23.11.2008
Skąd: UKF

Ostrzeżenie: (0%)
-----


Najlepiej o tym w ogóle nie wspominać


--------------------
Pomagam jeśli mam czas oraz jak się na tym znam :D
Go to the top of the page
+Quote Post
Booster
post
Post #8





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 24.06.2013
Skąd: Lublin

Ostrzeżenie: (0%)
-----


użyłem czegoś takiego
  1. function contributors() {
  2. global $wpdb;
  3. $authors = $wpdb->get_results("SELECT user_id from $wpdb->usermeta WHERE meta_key = 'last_name' ORDER BY meta_value");
  4. foreach ($authors as $author ) {
  5. $user = new WP_User($author->user_id);
  6. if ( '1' == $author->user_id ) {continue;}
  7. if ( '43' == $author->user_id ) {continue;}
  8. if ( '4' == $author->user_id ) {continue;}
  9. if ( '3' == $author->user_id ) {continue;}
  10. if ($user->has_cap('edit_published_posts'))
  11. {
  12. echo "<a href=\"".get_bloginfo('url')."/author/";
  13. the_author_meta('user_nicename', $author->user_id);
  14. echo "/\">";
  15. echo "<div class=\"author_info\">";
  16. the_author_meta('display_name', $author->user_id);
  17. echo "</div></a>, ";
  18. }
  19. }
  20.  
  21. }
  22. add_shortcode( 'spis', 'contributors' );

Wykluczyłem 4 użytkowników, lecz mam dwa problemy
1. nie segreguje polskich znaków daje je na koniec
2. przy ostatnim użytkowniku jest , zamiast . jak to mogę zmienić ?
Go to the top of the page
+Quote Post
lukasz_os
post
Post #9





Grupa: Zarejestrowani
Postów: 203
Pomógł: 55
Dołączył: 23.11.2008
Skąd: UKF

Ostrzeżenie: (0%)
-----


ad.1. Sprawdź jakie masz kodowanie w bazie danych. Bo sortujesz w niej więc pewnie tam masz jakiś dziwny collate.
ad.2 Nie wypisuj tego od razu za pomocą echo tylko wpakuj wszystkie linki w petli do tablicy (np $tablica_z_linkami). Potem na końcu zrób tak:
  1. echo implode(',',$tablica_z_linkami).".";


Ten post edytował lukasz_os 19.09.2014, 14:20:29


--------------------
Pomagam jeśli mam czas oraz jak się na tym znam :D
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 16:09