Contacte

Categoria inteligentă php. Construirea unui arbore de categorii în PHP. Recursiune. Tema categorie unică

Vedere arborescentă a subcategoriei de categorii oferă o modalitate ușor de utilizat de a enumera categoriile părinte și copil. Categoria și subcategoria lor sunt ușor separate printr-o structură arborescentă. Vizualizarea arborelui categorii este întotdeauna recomandată pentru a afișa un nivel infinit de categorii și subcategorii.

În acest tutorial, vă vom arăta cum să creați dinamic arborele de subcategorii de categorii folosind PHPși MySQL. The arbore de categorii recursive este foarte util pentru a enumera n categorii de nivel într-un dropdown. Exemplul de cod vă ajută să construiți un meniu derulant subcategorii de categorii de nivel n în PHP. Datele categoriilor dinamice vor fi preluate din baza de date MySQL și listate într-un format de arbore de categorii părinte-copil.

Creați tabelul bazei de date

Pentru a stoca categorii și subcategorii, trebuie creat un tabel în baza de date. Următorul SQL creează un tabel de categorii în baza de date MySQL.

CREATE TABLE `categories` (`id` int (11 ) NOT NULL AUTO_INCREMENT, `parent_id` int (11 ) NOT NULL DEFAULT "0" , `name` varchar (100 ) COLLATE utf8_unicode_ci NOT NULL , `created` datetime NOT NULL , `modified` datetime NOT NULL , `status` enum("1" ,"0" ) COLLATE utf8_unicode_ci NOT NULL DEFAULT "1" COMMENT "1:Active, 0:Inactive" , PRIMARY KEY (`id` )) ENGINE= InnoDB DEFAULT CHARSET= utf8 COLLATE= utf8_unicode_ci;

Coloana parent_id specifică dacă categoria este părinte sau copil. Dacă parent_id este 0, va fi o categorie părinte. În caz contrar, va fi o categorie copil, iar ID-ul este părintele acestei categorii.

Configurarea bazei de date (dbConfig.php)

Fișierul dbConfig.php este folosit pentru a conecta și selecta baza de date. Specificați gazda bazei de date ($dbHost), numele de utilizator ($dbUsername), parola ($dbPassword) și numele ($dbName) conform acreditărilor dvs. MySQL.

// Configurarea bazei de date
$dbHost = "localhost" ;
$dbUsername = "rădăcină" ;
$dbPassword = "rădăcină" ;
$dbName = "codexworld" ; // Creați o conexiune la baza de date
$db = mysqli nou ($dbHost, $dbUsername, $dbPassword, $dbName);// Verificați conexiunea
if ($db -> connect_error ) (
die("Conexiune a eșuat: " . $db -> connect_error );
}
?>

Funcție recursivă PHP pentru a genera arborele părinte/copil

Funcția categorieTree() generează un arbore de subcategorii de categorii de nivel n folosind PHP. Acesta va crea opțiunile drop-down pentru arborele de categorii.

  • $parent_id– optional. Specificați ID-ul părinte pentru a obține categoriile secundare ale acestei categorii părinte.
  • $sub_mark– optional. Marcați care se va adăuga la începutul numelui categoriei copilului.
// Includeți fișierul de configurare a bazei de date
necesită „dbConfig.php” ;categoryTree ($parent_id = 0 , $sub_mark = "" )(
global $db ;
$interogare = $db -> interogare( „SELECT * FROM categoriile WHERE parent_id =$id_parent ORDER BY nume ASC" );$interogare -> num_rows > 0 )(
while($rând = $interogare -> fetch_assoc())(
ecou" " ;
categorieTree($row[ "id" ], $sub_mark . "---" );
}
}
}

Categorii Subcategorii dropdown în PHP

Utilizați funcția categorieTree() pentru a construi un arbore de categorii dinamice în PHP cu MySQL.

Doriți să obțineți ajutor pentru implementare sau să modificați sau să extindeți funcționalitatea acestui script?

Salutări tuturor cititorilor blogului WordPress în interior in 2011, va felicit pentru sarbatorile viitoare si viitoare, va doresc multa sanatate, fericire si bucurii pentru urmatoarele 360 ​​de zile. După cum am promis în articolul meu despre planurile pentru următorul 2011, fac un pic de îmbunătățire a tuturor blogurilor mele principale - actualizarea sistemelor, instalarea celor mai recente versiuni de plugin-uri și săpat în șabloane de dragul optimizării și remedierii erorilor. A funcționat extrem de greu, aș spune chiar foarte minuțios - găsești o inexactitate, te decizi să o repari și ai în față 5 proiecte separate, pentru fiecare dintre ele trebuie să faci modificări. Ei bine, din moment ce am plănuit deja să fac toate acestea, nu există cale de întoarcere, în același timp, primesc experiență suplimentară în acest proces și am găsit deja aproximativ 5-6 subiecte pentru articole noi de blog :) Astăzi vom vorbi despre categorii și funcții pentru afișarea acestora.

Într-unul dintre articolele anterioare de pe blog, am publicat un hack care ajută. Această soluție a fost folosită pentru funcția de afișare a unei liste de categorii în bara laterală folosind funcția wp_list_categories. În rezultat, obțineți intrări ca aceasta:

Securitate

Dacă atributul titlu are cel puțin o anumită semnificație pentru seo, atunci ar fi mult mai util să plasați acolo doar numele categoriei și nu tot acest text inutil. De fapt, linkul de mai sus către hack a ajutat la rezolvarea acestei probleme. Dar nu asta este sarcina, toate acestea au fost adevărate (a lucrat) pentru , ceea ce a permis preprocesarea listei rezultate fără a o afișa imediat. Dar cum rămâne cu alte funcții pentru afișarea categoriilor? - asta este întrebarea.

De exemplu, astăzi am descoperit din greșeală că o mulțime de text inutil este scris în atributul titlu al unui link atunci când se afișează o listă de categorii pentru o anumită postare.

Toată problema a fost că folosește funcția the_category, pentru care, din păcate, nu puteți seta un parametru astfel încât rezultatul apelului acestuia să nu fie afișat imediat. Dar WordPress are o altă funcție get_the_category care returnează o serie de obiecte de categorie pentru o anumită postare.

funcția get_the_category

Sintaxa funcției get_the_category este destul de simplă:

nume_pisica; ?>

Programatorii știu că parametrul zero al unui tablou scoate primul element, ceea ce explică de fapt cum funcționează acest cod.

ID); var_dump ($categorii) ; ?>

ID); var_dump($categorii); ?>

Pentru a face acest lucru, trebuie să transmiteți ID-ul postării ca parametru de funcție, ceea ce se întâmplă în cod.

Apropo, folosesc această funcție pe unele site-uri pentru a afișa numele categoriei de postare, dar fără un link activ - este doar text suplimentar util pe pagină. În acest caz, puteți folosi codul:

nume_pisica . ""; ) ?>

nume_pisica . " "; ) ?>

Ei bine, și în cele din urmă, după puțină gândire, un hack s-a dovedit a afișa o listă de categorii pentru o postare fără a folosi funcția_category, pe care o înlocuim cu succes cu get_the_category. Dacă doriți să adăugați cod direct în locul din șablon unde sunt afișate categoriile, de exemplu, fișierul archive.php, atunci scriem ceva de genul:

Este posibil, în principiu, să plasați codul pentru afișarea categoriilor într-un fișier de funcție, apoi să schimbați the_category la o nouă funcție în fișierele șablon, de exemplu, numită my_thecat (). Desigur, nu uitați să adăugați codul corespunzător în fișierul functions.php înainte de a înlocui:

funcția my_thecat() ( global $post ; foreach ((get_the_category($post -> ID ) ) ca $category ) ( echo " cat_ID ) . "" title="" . $category -> cat_name . "">" . $ categorie -> cat_name . "; " ; ) )

funcția my_thecat() ( global $post; foreach((get_the_category($post->ID)) ca $category) ( echo "cat_ID)."" title="".$category->cat_name."">".$ categorie->nume_pisica."; "; ) )

Testat, totul merge. Mai rămâne o singură întrebare - cât de utile și extrem de necesare sunt toate acestea. Dacă aveți un blog cu un design permanent pe care doriți să îl faceți cel mai bun, atunci puteți petrece câteva minute și face modificări în consecință. Dacă aveți o mulțime de astfel de bloguri, cred că manipularea cu titlul nu va aduce beneficii seo speciale în ceea ce privește, este mai ușor să cumpărați link-uri în Rotapost pentru toate aceste proiecte - apropo, experimentul de a ridica TCI în sistemul a fost finalizat cu succes și pozitiv, va fi un raport despre acesta în curând.

Ieșire categorii de postări personalizate

Comentariile sugerează că exemplele de mai sus nu funcționează pentru tipurile de postări personalizate. Nu am întâlnit această sarcină, așa că vă pot sfătui doar să căutați soluția pe google în blogurile în limba engleză folosind cheia wordpress tipul de postare personalizat categorie show sau să folosiți indiciu de la utilizatorul Stinker (din comentarii). În locul în care sunt afișate categoriile, trebuie doar să lipiți codul:

Unde categoria_video este taxonomia postării personalizate (alias personalizat). Și acum mai detaliat de unde și ce. De exemplu avem:

// Tip înregistrare video if ( ! function_exists ( "video_cp" ) ) ( function video_cp() ( $labels = array ( "nume" => _x( "Video" , "Nume general tip post" , "video" ) , "singular_name" => _x ( „Video” , „Post Type Singular Name” , „video” ) , „menu_name” => __( „Video” , „video” ) , „parent_item_colon” ​​=> __( „Parinte:” , „video” ) , "all_items" => __( „Toate videoclipurile”, "video" ) , "view_item" => __( "Vizualizare" , "video" ) , "add_new_item" => __( „Adăugați un videoclip nou”, "video" ) , "add_new" => __( "Adăugați videoclip" , "video" ) , "edit_item" => __( "Editează videoclipul", „video” ) , „update_item” => __( „Actualizați videoclipul” , „video” ) , „search_items” => __( „Găsiți videoclipul” , „videoclipul” ) , „not_found” => __( „Nu a fost găsit " , "video" ) , "not_found_in_trash" => __( „Nu a fost găsit în coș”, „video” ) , ); $args = array ( "labels" => $labels , "supports" => array ( "titlu" , "editor" , "extras" , ) , "taxonomii" => matrice ( "categoria_video" ) , // categorie pe care o vom crea mai jos (alias taxonomie)"public" => true , "menu_position" => 5 , "menu_icon" => "dashicons-id-alt" , ) ; register_post_type( "video" , $args ); ) add_action( "init" , "video_cp" , 0 ); // inițializează) dacă ( ! function_exists ("categoria_video" ) ) ( // Categorii pentru posturi vacante funcția categorie_video() ( $labels = matrice ( "nume" => _x( „Categorii video”, „Nume general al taxonomiei” , „categoria_video” ) , „nume_singular” => _x( „Categoria video”, „Nume singular al taxonomiei” , „categoria_video” ) , „menu_name” => __( „Categorii” , „categoria_video” ) , „all_items” => __( „Categorii” , „categoria_video” ) , „parent_item” => __ ( „Videoclipul categoriei părinte”, "categoria_video" ) , "parent_item_colon" => __( „Videoclip din categoria părinte:”, "categoria_video" ) , "new_item_name" => __( "Categorie noua", "categoria_video" ) , "add_new_item" => __( „Adăugați o nouă categorie”, "categoria_video" ) , "edit_item" => __( „Editați categoria”, "categoria_video" ) , "update_item" => __( „Actualizare categorie”, "categoria_video" ) , "search_items" => __( "Căutare" , "categoria_video" ) , "add_or_remove_items" => __( „Adăugați sau eliminați categoria”, "categoria_video" ) , "choose_from_most_used" => __( „Căutare printre populare”, "categoria_video" ) , "not_found" => __( "Nu a fost găsit" , "categoria_video" ) , ) ; $args = array ( "labels" => $labels , "ierarhic" => true , "public" => true , ) ; register_taxonomy( "categoria_video" , array ( "video " ), $args ) ; ) add_action( "init" , "categoria_video" , 0 ); // inițializează }

// Postați tip video dacă (! function_exists("video_cp")) ( function video_cp() ( $labels = array("name" => _x("Video", "Post Type General Name", "video")), " singular_name" => _x("Video", "Post Type Singular Name", "video"), "menu_name" => __("Video", "video"), "parent_item_colon" => __("Parinte:" , „video”), „all_items” => __(„Toate videoclipurile”, „video”), „view_item” => __(„Vizualizare”, „video”), „add_new_item” => __(„Adăugați un videoclip nou " , "video"), "add_new" => __("Adaugă videoclip", "video"), "edit_item" => __("Editează videoclipul", "videoclipul"), "update_item" => __("Actualizează video „, „video”), „search_items” => __(„Găsiți un videoclip”, „video”), „not_found” => __(„Nu a fost găsit”, „video”), „not_found_in_trash” => __( „Nu a fost găsit în coș”, „video”)),); $args = array(„labels” => $labels, „supports” => array(„titlu”, „editor”, „extras”,), "taxonomii" => array("categoria_video"), // categoria pe care o vom crea mai jos (alias taxonomie) "public" => true, "menu_position" => 5, "menu_icon" => "dashicons-id-alt",); register_post_type ("video", $args); ) add_action("init", "video_cp", 0); // initialize ) if (! function_exists("categoria_video")) ( // Categorii pentru posturi vacante function categoria_video() ( $labels = array("name" => _x("Categorii video", "Taxonomie General Name", "categoria_video") "), "singular_name" => _x("Categorie Video", "Taxonomie Singular Name", "categoria_video"), "menu_name" => __("Categorii", "categoria_video"), "all_items" => __(" Categorii”, „categoria_video”), „parent_item” => __(„Videoclipul categoriei părinte”, „video_categoria”), „parent_item_colon” ​​=> __(„Videoclipul categoriei părinte:”, „video_categoria”), „new_item_name” => __(„Categorie nouă”, „categoria_video”), „add_new_item” => __(„Adăugați o categorie nouă”, „categoria_video”), „edit_item” => __(„Editați categoria”, „categoria_video”), „update_item” => __(„Actualizați categoria”, „categoria_video”), „search_items” => __(„Căutare”, „categoria_video”), „add_or_remove_items” => __(„Adăugați sau eliminați categorie”, „categoria_video”), „ choose_from_most_used" => __("Căutați printre popular”, „categoria_video”), „not_found” => __(„Negăsit”, „categoria_video”)),); $args = array("labels" => $labels, "ierarhic" => true, "public" => true,); register_taxonomy("categorie_video", array("video"), $args); ) add_action("init", "categoria_video", 0); // inițializați)

Mulțumim utilizatorului Stinker pentru sfat, s-ar putea să-l găsiți util.

P.S. gardian. Într-unul dintre blogurile Runet, a fost găsită o selecție minunată de teme de portofoliu wordpress din 17 șabloane gratuite de înaltă calitate.

Există din ce în ce mai mulți fani ai WordPress în fiecare zi și mulți folosesc acest motor doar ca CMS. Este atât de simplu încât chiar și un începător non-programator îl poate înțelege. Mai jos voi arăta câteva tehnici care sunt folosite de mulți bloggeri avansați, aceste tehnici sunt concentrate în principal pe uzabilitate;

1) Evidențierea meniului dinamic

Cum să evidențiezi un meniu dinamic, cum ar fi, de exemplu, . Scriem o condiție: dacă aceasta este prima pagină a Acasă / Categorie / Arhivă / Căutare / Single, adăugați class=current la eticheta li (va fi evidențiată ca Galerie). Dacă al doilea element este „Despre”, atunci adăugați clasa „curent”. etc.

2) etichete de antet dinamice

Pentru a folosi antete dinamice pentru pagini, scriem în header.php.

<?php if (is_home() ) { echo bloginfo("name" ) ; } elseif (is_404() ) { echo "404 Not Found" ; } elseif (is_category() ) { echo "Category:" ; wp_title("" ) ; } elseif (is_search() ) { echo "Search Results" ; } elseif ( is_day() || is_month() || is_year() ) { echo "Archives:" ; wp_title("" ) ; } else { echo wp_title("" ) ; } ?>

<?php if (is_home()) { echo bloginfo("name"); } elseif (is_404()) { echo "404 Not Found"; } elseif (is_category()) { echo "Category:"; wp_title(""); } elseif (is_search()) { echo "Search Results"; } elseif (is_day() || is_month() || is_year()) { echo "Archives:"; wp_title(""); } else { echo wp_title(""); } ?>

3) Conținut dinamic:

Dacă doriți ca un conținut să fie doar pe prima pagină, scrieți:

5) Cum se schimbă tema unei anumite categorii

Să presupunem că doriți să schimbați subiectul postărilor dintr-o anumită categorie. Pentru a face acest lucru, puteți utiliza funcția in_category.
Dacă implicit este single.php, utilizați acest cod. Dacă o postare din categoria 1 folosim single1.php, pentru categoria 2 folosim single2.php, iar pentru altele folosim single_other.php.

post; if ( in_category("1" ) ) ( include (TEMPLATEPATH . "/single1.php" ) ; ) elseif ( in_category("2" ) ) ) ( include (TEMPLATEPATH . "/single2.php" ) ; ) else ( include ( TEMPLATEPATH . "/single_other.php" ) ; ) ? >

post; if (in_category("1")) ( include(TEMPLATEPATH . "/single1.php"); ) elseif (in_category("2"))) ( include(TEMPLATEPATH . "/single2.php"); ) else ( include( TEMPLATEPATH . "/single_other.php"); ) ? >

Recent, un subiect similar a fost abordat și într-unul dintre bloguri, a trebuit să-l folosesc pentru a scăpa de link-urile externe de blog.

6) Tema categoriei unică

Ce se întâmplă dacă vrei o anumită temă pentru o anumită categorie? Să salvăm tema acestei categorii ca categorie-2.php (exact acesta este modelul!). Deci categorie-2.php va fi folosită de categoryID 2, categorie-3.php de categoryID 3 și așa mai departe.

O problemă destul de simplă de rezolvat. Pentru a face acest lucru, trebuie să setăm o variabilă ($loopcounter) într-o buclă. Dacă $loopcounter este mai mic sau egal cu 1, codul google-ad.php este inclus.

// chestii în buclă

// chestii în buclă

Interogați postările

Query Posts este folosit pentru a controla ieșirea postărilor din bucla. Cu acesta, puteți controla ce să afișați, când să afișați și cum să afișați.

8) Afișează cele mai recente postări

ultimele 5 postari:

  • ">

  • ">

9) Postări dintr-o anumită categorie

  • ">

  • ">

Să presupunem că trebuie să excludem afișarea unei categorii (categoryID 2):

//bucla aici

//bucla aici

câmpuri customizate

Câmpul personalizat este un lucru foarte util, destul de des folosit pentru a afișa informații după o postare. Este folosit, de exemplu, pentru a afișa informații despre autorul postării.

Mai întâi, să adăugăm un câmp personalizat postării.

Pentru a afișa o imagine și pentru a atașa un link către postare, punem următorul cod într-o buclă (înainte de textul postării în sine):

// obține imaginea (câmp personalizat) ?> ID , „imagine_articol” , adevărat ); ?> "> "alt="(!LANG: !}" />

id, „imagine_articol”, adevărat); ?> "> "alt="(!LANG:!}" />

Nu uitați că pot exista mai multe câmpuri personalizate după postare. Un efect similar poate fi văzut la Best Web Gallery, unde miniaturile, linkurile URL și evidențierea informațiilor sunt afișate într-un mod similar. De asemenea, puteți citi despre câmpurile personalizate în acest articol - folosind câmpuri personalizate în WordPress.

Pagini de listă WP

Eticheta wp_list_pages este folosită pentru a afișa o listă de pagini în antet și bara laterală

12) Harta site-ului

Pentru a afișa harta site-ului, trebuie doar să adăugați acest cod pe pagina sitemap.php

Rețineți că pagina ID 12 este exclusă deoarece această pagină este sitemap.php în sine și nu trebuie redată...
Metoda funcționează, deși probabil este mai bine să utilizați metoda mai standard și să construiți harta site-ului folosind .

13) Meniul dinamic al subpaginii

Adăugați acest cod la sidebar.php și va afișa un meniu pentru subpagini dacă există subpagini pe pagina respectivă:

ID . „&echo=0” ); dacă ($copii ) ( ?>

ID."&echo=0"); dacă ($copii) ( ?>

14) Tema paginii

Ar fi bine să nu ratați o astfel de caracteristică precum șablon de pagină, care vă permite să setați o nouă temă pentru blogul dvs. În primul rând, trebuie să creați tema în sine, apoi trebuie să desemnați pagina cu propria temă. Iată cum arată (ex. portfolio.php)

/* Nume șablon: portofoliu */ ?> //bucla aici

//bucla aici

Când scrieți sau editați o pagină, puteți vedea „Șablon de pagină” în partea dreaptă și puteți specifica acolo tema dorită.

Opțiuni WordPress

Ultimul lucru pe care îl vom analiza sunt opțiunile pentru WordPress în sine și blogul în general.

15) Pagina de pornire

În mod implicit, WordPress plasează blogul pe pagina de start a site-ului. Dar dacă doriți o altă pagină, cum ar fi o pagină de bun venit, atunci accesați Administrator > Opțiuni > Citire.

16) URL-uri ale paginilor

În mod implicit, WordPress folosește linkuri precum Permalink-uri www.yoursite.com/?p=123, care nu sunt nici frumoase, nici de înțeles de motoarele de căutare. Dar puteți schimba acest lucru în Admin> Opțiuni> Permalink-uri (Opțiuni> Permalink-uri). O opțiune bună pentru a scrie adrese este aceasta: /%category%/%postname%/

În mod implicit, WordPress folosește prefixul categoriei „category” (ex. site-ul tău.com/category/cat-name/). Dar pentru a-l înlocui cu „articol”, accesați Opțiuni> Permalink-uri (Opțiuni> Permalink-uri), iar linkurile vor arăta astfel: site-ul tău.com/article/nume-cat-ul/

Dacă doriți, prefixați cu pluginuri speciale.

Așa s-au dovedit a fi aceste 17 trucuri WordPress, mulțumiri lui Michael pentru ele. Vă reamintesc că puteți găsi o mulțime de lucruri utile și în blogul său despre web design, unde se adună o mulțime de informații interesante. În principiu, unele hack-uri au fost deja luate în considerare, dar acest tip de repetare nu strica. Acolo unde este posibil, am adăugat link-uri către cu drepturi depline (mai detaliat) cu o analiză detaliată a problemei. Deși acest lucru este mai mult pentru începători, codul din articol este suficient pentru dezvoltatorii experimentați, cred că puteți adăuga singur ceea ce aveți nevoie acolo :)

P.S. gardian. Pentru cei care plănuiesc să se angajeze serios în design, vor exista tutoriale video despre web design - ucraineană! - vino la cititorii site-ului.
Magazinul online LensMaster ofera lentile de contact, lentile de contact colorate, precum si solutii si accesorii.

Astăzi scopul nostru este să creăm o structură ierarhică a categoriilor. Este important pentru noi ca este convenabil sa stocam categorii si ca este usor sa le afisam acolo unde avem nevoie de ele.

Uneori, simplul pare complicat, de aceea voi așeza câteva fragmente de cod care sper să vă fie utile pentru implementarea categoriilor php sub formă de arbore.

Deci, structura ar trebui să fie formată din id-ul categoriei (id), numele categoriei (nume) și, bineînțeles, id-ul categoriei părinte (parent_id). În MySQL arată astfel:

CREATE TABLE IF NU EXIST `category` (`id` int(10) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(255) NOT NULL, `parent_id` int(11) NOT NULL, PRIMARY KEY (`id`)) MOTOR =InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=0 ;

Structură minimă și ușor de înțeles pentru stocarea categoriilor.

INSERT INTO `category` (`id`, `name`, `parent_id`) VALORI (1, „Telefoane și tablete”, „0”), (2, „Mașini”, „0”), (3, „Samsung ", "1"), (4, "Apple", "1"), (5, "LG", "1"), (6, "Ford", "2"), (7, "Lexus", "2"), (8, "BMW", "2"), (9, "Galaxy Tab 4", "3"), (10, "Galaxy S6", "3");

Unde parent_id=0, această categorie nu are nicio categorie părinte.

Totul este clar și simplu aici. Acum să trecem la listarea categoriilor. Dar pentru ieșirea corectă a listei, trebuie mai întâi să obținem întreaga listă de categorii php și numai apoi, folosind recursiunea, să ne formăm arborele. Următoarea funcție este de a obține această listă:

Funcția get_cat() ( // interogă baza de date $sql = "SELECT * FROM categorie"; $rezultat = mysql_query($sql); if(!$result) ( return NULL; ) $arr_cat = array(); if( mysql_num_rows ($rezultat) != 0) ( //Pentru($i = 0; $i< mysql_num_rows($result);$i++) { $row = mysql_fetch_array($result,MYSQL_ASSOC); //Формируем массив, где ключами являются адишники на родительские категории if(empty($arr_cat[$row["parent_id"]])) { $arr_cat[$row["parent_id"]] = array(); } $arr_cat[$row["parent_id"]] = $row; } //возвращаем массив return $arr_cat; } }

//obține matricea de catalog $rezultat = get_cat();

Acum avem nevoie de o funcție cu recursivitate

Funcția view_cat($arr,$parent_id = 0) ( //Condiții de ieșire recursiunii if(empty($arr[$parent_id])) ( return; ) echo "

    "; // parcurge matrice si afiseaza for($i = 0; $i< count($arr[$parent_id]);$i++) { echo "
  • " .$arr[$parent_id][$i]["nume"].""; //recursie - verificați dacă există categorii de copii view_cat($arr,$arr[$parent_id][$i]["id "]); ecou"
  • ";) ecou"
"; }

Acum rămâne doar să afișați directorul pe ecran folosind funcția recursivă

View_cat($rezultat);

Și, în general, asta e tot. Astfel putem obține un arbore complet de categorii cu subcategorii infinite.

O piatră de poticnire destul de comună atunci când dezvoltați o temă WordPress este cum să utilizați constructorul de condiții if else, cum să le setați corect și cum să le folosiți în general în WordPress. Pentru ca milioane de utilizatori să nu înnebunească în căutarea soluțiilor, WordPress, ca să spunem așa, a creat etichete condiționate, despre care se vor discuta astăzi.

Structura standard a condiției arată astfel:

Pe de o parte, totul este clar, dar, pe de altă parte, întrebarea este cum să formulăm corect condiția, astfel încât WordPress să înțeleagă ce vrem de la ea 🙂 hai să mergem:

1. Pagina principală

De multe ori dorim ca anumite informații să fie afișate doar pe pagina principală. Pentru a o rezolva, puteți crea un fișier home.php în folderul dvs. de temă sau puteți adăuga următoarea condiție la fișierul index.php:

....Aici afișăm informațiile pe care vrem să le vedem pe pagina principală

2. Verificarea rubricilor

Să punem următoarea condiție: Dacă suntem în categoria WordPress, atunci vom afișa expresia „Bine ați venit la WordPress!”, iar dacă nu, atunci expresia „Bine ați venit pe site-ul nostru!”

/*Puteți folosi și această schemă*/

„Bine ați venit, WordPress!”

Bun venit pe site-ul nostru!"

În continuare, voi folosi id ca identificator pentru o categorie (etichetă) sau postare (pagină) - îl găsiți în panoul de control al site-ului. Dacă scrieți condiții pentru titluri (etichete), atunci uitați-vă la id-ul de pe pagina de titluri (etichete), iar dacă există intrări (pagini), atunci pe pagina tuturor intrărilor (paginilor) ... panică). De unde știi? - vezi ilustrația:

Și încă un truc 🙂 să zicem că avem nevoie de o condiție pentru a verifica mai multe categorii, atunci condițiile vor arăta astfel:

obținem ceea ce avem nevoie

3. Verificarea etichetelor

Etichetele sunt un clasificator grozav în interiorul titlurilor. Luați în considerare câteva exemple despre cum pot fi testate.

Sarcină: Dacă postarea are eticheta „plugin”, atunci afișați expresia - WordPress Plugin

Sarcină: Dacă ne aflăm pe pagina de etichete „plugin”, atunci afișați expresia - WordPress Plugin Collection.

Notă: atunci când lucrați cu condițiile etichetei, cel mai bine este să utilizați eticheta etichetei și nu identificatorul acesteia.

Concluzie

Am acoperit etichetele condiționale de bază, dacă aveți întrebări, adresați-le în comentarii! Utilizare fericită!



Ți-a plăcut articolul? Împărtășește-l