PHP дээр категорийн мод бүтээх. Рекурс. Бид php хүний ​​бус ангиллын if нөхцөлийг бүрэн ашигладаг

Өнөөдөр бидний зорилго бол ангиллын шаталсан бүтцийг бий болгох явдал юм. Ангилал хадгалах нь тохиромжтой бөгөөд тэдгээрийг шаардлагатай газарт харуулахад хялбар байх нь бидний хувьд чухал юм.

Заримдаа энгийн зүйлс төвөгтэй мэт санагддаг тул би PHP ангиллыг мод хэлбэрээр хэрэгжүүлэхэд хэрэг болно гэж найдаж байгаа хэд хэдэн кодын хэсгүүдийг нийтлэх болно.

Тиймээс бүтэц нь категорийн id (id), категорийн нэр (нэр) ба мэдээжийн хэрэг эх ангиллын id (parent_id) зэргээс бүрдэх ёстой. MySQL дээр энэ нь иймэрхүү харагдаж байна:

`Ангилал` БАЙХГҮЙ БОЛ ХҮСНЭГТ ҮҮСГЭ (`id` int(10) гарын үсэг зураагүй NULL AUTO_INCREMENT, `name` varchar(255) NULL БИШ, `parent_id` int(11) NULL БИШ, АНХАН ТҮЛХҮҮР (`id`)) Хөдөлгүүр =InnoDB өгөгдмөл CHARSET=utf8 AUTO_INCREMENT=0 ;

Ангилал хадгалах хамгийн бага бөгөөд тодорхой хүснэгтийн бүтэц.

`Ангилал` (`id`, `нэр`, `эцэг эхийн_id`) ҮНЭ ЗҮЙН ОРУУЛАХ (1, "Утас ба таблет", "0"), (2, "Машин", "0"), (3, "Samsung" ", "1"), (4, "Apple", "1"), (5, "LG", "1"), (6, "Форд", "2"), (7, "Lexus", "2"), (8, "BMW", "2"), (9, "Galaxy Tab 4", "3"), (10, "Galaxy S6", "3");

parent_id=0 гэсэн утгатай бол энэ ангилалд эх ангилал байхгүй.

Энд бүх зүйл ойлгомжтой бөгөөд энгийн байдаг. Одоо ангиллын жагсаалтыг харуулах руу орцгооё. Гэхдээ жагсаалтыг зөв харуулахын тулд бид эхлээд PHP ангиллын жагсаалтыг бүхэлд нь авах хэрэгтэй бөгөөд зөвхөн дараа нь рекурсийг ашиглан модыг бий болгоно. Энэ жагсаалтыг авахын тулд дараах функцийг бүтээсэн болно.

Функц get_cat() ( //өгөгдлийн сангийн асуулга $sql = "СОНГОХ * ангилалаас"; $үр дүн = mysql_query($sql); if(!$үр дүн) ( NULL буцаана; ) $arr_cat = массив(); if( mysql_num_rows( $үр дүн) != 0) ( //Годолд бид for($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; } }

//сангийн массивыг авах $үр дүн = get_cat();

Одоо бидэнд рекурс бүхий функц хэрэгтэй байна

Функц view_cat($arr,$parent_id = 0) ( //Recursion-аас гарах нөхцөл if(empty($arr[$parent_id])) ( return; ) echo "

    "; // массиваар гүйлгэж, дэлгэцэн дээр for($i = 0; $i< count($arr[$parent_id]);$i++) { echo "
  • " .$arr[$parent_id][$i]["name"]."; //recursion - хүүхдийн ангилал байгаа эсэхийг шалгах view_cat($arr,$arr[$parent_id][$i]["id" ]); цуурай "
  • "; ) цуурай "
"; }

Одоо зөвхөн рекурсив функцийг ашиглан лавлахыг дэлгэцэн дээр харуулах л үлдлээ

Харах_муур($үр дүн);

Тэгээд ерөнхийдөө энэ л байна. Ингэснээр бид төгсгөлгүй дэд категори бүхий бүрэн ангиллын модыг авах боломжтой.

Ангиллын талаарх мэдээллийг агуулсан объектын массивыг буцаана.

Энэ функцэд дамжуулагдсан параметрүүд нь wp_list_categories() функцэд дамжуулагдсан параметрүүдтэй маш төстэй бөгөөд массив болон асуулгын мөр хэлбэрээр дамжуулж болно: type=post&order=DESC .

✈ 1 удаа = 0.005625s = Маш удаан| 50000 удаа = 11.98с = аажмаар| PHP 7.1.11, WP 4.9.5

Хэрэглээ

$ категори = авах_категори ($ арг);

Хэрэглээний загвар

$categories = get_categories(array("taxonomy" => "category", "type" => "post", "child_of" => 0, "эцэг эх" => "", "захиалга" => "нэр", " захиалга" => "ASC", "hude_empty" => 1, "шаталсан" => 1, "хасах" => "", "оруулж оруулах" => "", "тоо" => 0, "давхар_тоолол" => худал, // функцийн тайлбар дахь параметрүүдийн бүрэн жагсаалтыг үзнэ үү http://wp-kama.ru/function/get_terms)); if($categories)( foreach($categories as $cat)( // $cat объект дахь өгөгдөл // $cat->term_id // $cat->нэр (1-р бүлэг) // $cat->slug (rubrika) - 1) // $cat->term_group (0) // $cat->term_taxonomy_id (4) // $cat->taxonomy (category) // $cat->тодорхойлолт (Тодорхойлолтын текст) // $cat-> эцэг эх (0) // $cat->count (14) // $cat->object_id (2743) // $cat->cat_ID (4) // $cat->category_count (14) // $cat-> категорийн_тайлбар (Тодорхойлолтын текст) // $муур->муурын_нэр (1-р бүлэг) // $муур->категорийн_сайн нэр (rubrika-1) // $муур->категорийн_эцэг эх (0) ) ) ангилал зүй (шугам)Боловсруулах ангиллын нэр. 3.0 хувилбараас хойш нэмэгдсэн.
Өгөгдмөл: "категори"төрөл (шугам)
  • post - нийтлэлийн ангилал (анхдагч);
  • холбоос - холбоос хэсгүүд.
    Өгөгдмөл: "нийтлэл"
хүүхэд (шугам)Заасан ангиллын хүүхдийн ангиллыг (бүх үүрлэх түвшинг оруулаад) аваарай. Параметр нь эх категорийн ID-г (таны оруулахыг хүссэн категори) заадаг. эцэг эх (тоо)Үндсэн ангилал нь параметрт заасан ID-тай тэнцүү ангиллыг авна. child_of-ээс ялгаатай нь үүрлэх нэг түвшнийг харуулах болно.
Өгөгдмөл: ""захиалгаар (шугам)

Хүлээн авсан өгөгдлийг тодорхой шалгуурын дагуу ангилах. Жишээлбэл, ангилал тус бүрийн нийтлэлийн тоо эсвэл ангиллын нэрээр. Дараахь шалгуурууд байдаг.

  • ID - ID-аар эрэмбэлэх;
  • нэр - нэрээр нь ангилах (анхдагч);
  • slug - alt-аар эрэмбэлэх. нэр (слаг);
  • тоолох - ангилалд оруулсан бичлэгийн тоогоор;
  • нэр томъёоны_бүлэг - бүлгээр.

Өгөгдмөл: "нэр"

Захиалга (шугам)

"Захиалга" параметрт заасан эрэмбэлэх чиглэл:

  • ASC - дарааллаар, жижигээс том хүртэл (1, 2, 3; a, b, c);
  • DESC - урвуу дарааллаар, томоос жижиг хүртэл (3, 2, 1; c, b, a).

Өгөгдмөл: "ASC"

Хоосон_нуух (логик)

Хоосон ангиллыг хүлээн авах эсэх (оруулга байхгүй):

  • 1 (үнэн) - хоосон зүйлийг хүлээн авахгүй,
  • 0 (худал) - хоосон зүйлийг хүлээн авах.

Өгөгдмөл: үнэн

Шаталсан (логик)Хэрэв параметрийг тохируулсан бол үнэн, дараа нь үр дүн нь хүүхдийн ангилалд (хоосон бус) оруулгатай хоосон хүүхдийн категорийг оруулах болно.
Өгөгдмөл: үнэноруулахгүй (мөр/массив)Жагсаалтаас ямар ч ангиллыг хас. Та таслалаар эсвэл массиваар тусгаарлагдсан ангиллын ID-г зааж өгөх ёстой. Хэрэв энэ параметрийг зааж өгсөн бол child_of параметрийг хүчингүй болгоно.
Өгөгдмөл: ""оруулах (мөр/массив)Зөвхөн заасан ангиллыг жагсаа. Та таслалаар эсвэл массиваар тусгаарлагдсан ангиллын ID-г зааж өгөх хэрэгтэй.
Өгөгдмөл: ""тоо (тоо)Хязгаар. Татаж авах ангиллын тоо. Анхдагч байдлаар, ямар ч хязгаарлалт байхгүй - бүх категориудыг татаж авах болно. дэвсгэр_тоо (логик)Хэрэв та үнэн гэж үзвэл эцэг эхийн ангилал дахь нийтлэлийн тоог харуулсан тоо нь түүний нийтлэл болон хүүхдийн ангилалын нийтлэлийн нийлбэр байх болно.
Өгөгдмөл: худал

Жишээ

№1 Унтраах жагсаалт

Ангилалуудын унадаг жагсаалтыг үүсгэхийн тулд бид энэ зорилгоор тусгайлсан өөр функцийг ашиглаж болно, wp_dropdown_categories() :

Wp_dropdown_categories(array("hide_empty" => 0, "name" => "анги_эцэг эх", "захиалга" => "нэр", "сонгосон" => $category->эцэг, "шаталсан" => үнэн, "show_option_none" => __("Байхгүй")));

Гэсэн хэдий ч, энэ хандлагыг ашигласнаар бид жагсаалт гаргахад уян хатан байдлаа алдах болно, учир нь бид бүрэн бүрдсэн жагсаалтыг хүлээн авах болно.

Тиймээс зарим тохиолдолд функцийг ашиглан унадаг жагсаалт үүсгэх нь илүү логик байх болно авах_категори (). Энд жишээ байна (бид 10-р ангиллын дэд ангиллыг (хүүхдүүдийг) харуулах шаардлагатай гэж үзвэл):

#2 Ангиллын жагсаалт ба тэдгээрийн тайлбар

Энэ жишээ нь бид категориудын холбоосын жагсаалтыг хэрхэн харуулахыг харуулах бөгөөд линк бүрийн дараа шууд категорийн тайлбар байх болно (категорийг үүсгэх/засварлах үед заасан):

"нэр", "захиалга" => "ASC")); foreach ($ категори гэж $ категори) ( echo "

Ангилал: term_id). "" гарчиг="". sprintf(__("%s доторх бүх нийтлэлийг харах"), $category->нэр) . "" " . ">" . $category->name."

"; цуурай "

Тайлбар:". $category->тайлбар ."

"; цуурай "

Нийтлэлийн тоо: ". $category->count ."

"; } ?>

Тэмдэглэл

  • Харна уу: get_terms() Өөрчлөх боломжтой аргументуудын төрөл.

Өөрчлөлтүүдийн жагсаалт

2.1.0 хувилбараас Танилцуулсан.

Код ангилал авах: wp-includes/category.php WP 5.3.2

"ангилал"); $args = wp_parse_args($args, $defaults); /** * get_categories()-г дуудах үед нэр томъёог сэргээхэд ашигладаг ангилал зүйг шүүдэг. * * @2.7.0-с хойш * * @param string $taxonomy Нэр томъёог сэргээх ангилал. * @param массив $args Аргументуудын массив. get_terms()-г үзнэ үү. */ $args["taksonomy"] = application_filters("get_categories_taxonomy", $args["taxonomy"], $args); // Буцах compat if (isset($args["type"]) && "link" == $args["type"]) ( _deprecated_argument(__FUNCTION__, "3.0.0", sprintf(/* орчуулагч: 1: " төрөл => холбоос", 2: "таксономи => холбоос_категори" */ __("%1$s хуучирсан. Оронд нь %2$s-г ашигла."), " => холбоос бичнэ үү", "ангилал зүй => холбоосын ангилал")); $args["taksonomy"] = "link_category"; ) $categories = get_terms($args); if (is_wp_error($categories)) ( $categories = массив(); ) else ( $categories = (массив) ) $categories; foreach (массив_түлхүүрүүд ($ категориуд) $ k) ( _make_cat_compat ($ категори[ $ k ]); ) ) $ категориуд буцаана; )

Өнөөдөр би яаж хийхийг танд хэлэх болно MySQLшаталсан модыг бий болгох.

Ийм модыг динамик сайтын ангиллыг бий болгоход, жишээлбэл, онлайн дэлгүүрт эсвэл нийтлэл дээрх сэтгэгдлийг харуулахад ашигладаг.

Ер нь бол боломжтой газар л барьдаг. Хамгийн гол нь үүнийг зөв барьж, хэрэглэх явдал юм.

Шаталсан модыг бүтээхэд хамгийн чухал зүйл бол мэдээллийн сангийн зөв бүтэц юм! Жишээлбэл, сайтын категориудыг хадгалдаг мэдээллийн сангийн бүтцийг авч үзье. Энгийн жишээний хувьд хүснэгт нь 3 талбартай байна:

  1. ID- категорийн түлхүүр
  2. эцэг эхийн дугаар- эцэг эхийн ангиллын id
  3. нэр- хэсгийн нэр

PHPMyAdmin дээр SQL асуулга ажиллуулж хүснэгт үүсгэцгээе:

CREATE TABLE `categories` (`id` INT NOT NULL AUTO_INCREMENT , `parent_id` INT NOT NULL , `name` VARCHAR(50) NOT NULL, PRIMARY KEY (`id`));

Одоо бид хүснэгтээ бичлэгээр дүүргэх хэрэгтэй. Үүний үр дүнд та ийм хүснэгтийг авах ёстой.

Та тестийн хүснэгтийг дараах асуултаар дүүргэж болно.

`Ангилал` (`id`, `эцэг эхийн_id`, `нэр`) ҮНЭ ЗҮЙН ОРУУЛАХ (1, 0, "1-р хэсэг"), (2, 0, "2-р хэсэг"), (3, 0, "3-р хэсэг" ), (4, 1, "Хэсэг 1.1"), (5, 1, "Хэсэг 1.2"), (6, 4, "Хэсэг 1.1.1"), (7, 2, "Хэсэг 2.1"), (8) , 2, "Хэсэг 2.2"), (9, 3, "Хэсэг 3.1");

Тэгээд одоо анхаарлаа хандуулаарай! Дараа нь, логикийн хувьд та категори болон түүний дэд ангилал бүрийг сонгохын тулд өгөгдлийн сангаас гогцоонд сонголт хийх хэрэгтэй. ГЭХДЭЭ! Мэдээллийн санд хэд хэдэн ангилал байгаа бол зүгээр, энэ нь зарчмын хувьд буруу юм. Хэрэв сайт нь онлайн дэлгүүр бөгөөд зуун ангилалтай, ижил тооны дэд ангилалтай бол яах вэ? Дараа нь асуудал! Өгөгдлийн сангийн үл мэдэгдэх тооны асуулга нь сайтын үйл ажиллагааг удаашруулах эсвэл MySQL серверийг бүрэн сүйрүүлэхэд хүргэдэг.

Та бүх категори болон тэдгээрийн дэд ангиллыг сонгохдоо зөвхөн нэг мэдээллийн сангийн асуулга ашиглаж болно.

Хүсэлт гаргаж, цаашдын ажилд тохиромжтой массив үүсгэцгээе.

//Өгөгдлийн сангаас өгөгдөл сонгох $result=mysql_query("СОНГОХ * категороос"); //Хэрэв өгөгдлийн санд бүртгэл байгаа бол бид массив үүсгэдэг if (mysql_num_rows($result) > 0)( $cats = array(); //Хэсгүүдийн массив үүсгэх гогцоонд түлхүүр нь id байх болно. үндсэн ангиллын болон массив хэсгүүдийн түлхүүр нь ангиллын id байх болно while($cat = mysql_fetch_assoc($result))( $cats_ID[$cat["id"]] = $cat; $cats[$ cat["parent_id"]][$cat["id"]] = $cat; ))

Хүснэгтээс бүх өгөгдлийг сонгох ангилалмөн ассоциатив массив үүсгэнэ $ муур, түлхүүр нь эх ангиллын id байх болно.

Одоо бид мод барих болно. Барилгын хувьд бид ашиглах болно рекурсив функц.

Шаталсан мод нь дараах бүтэцтэй байна.

  • 1-р хэсэг
    • 1.1-р хэсэг
      • 1.1.1-р хэсэг
    • 1.2-р хэсэг
  • 2-р хэсэг
    • 1.1-р хэсэг
    • 1.2-р хэсэг
  • 3-р хэсэг
    • 3.1-р хэсэг

Рекурсив функц үүсгэцгээе барих_мод() . Энэ нь бидний ямар ч үүрлэх шаталсан модыг бий болгоно.

Функц build_tree($cats,$parent_id,$ only_parent = false)( if(is_array($cats) and isset($cats[$parent_id]))( $tree = "

    "; if($only_parent==false)( foreach($cats[$parent_id] as $cat)( $tree .= ""; ))elseif(is_numeric($only_parent))( $cat = $cats[$parent_id) ][$ only_parent]; $tree .= "
  • ".$cat["нэр"]." #".$cat["id"]; $tree .= build_tree($cats,$cat["id"]); $tree .= "
  • "; ) $ мод. = "
"; ) эс бөгөөс null буцаана; $ модыг буцаана; )

Функц нь хэсэгчилсэн массив болон хэсгийн ID-г авдаг. Гогцоонд бид дэд ангиллаар дамждаг бөгөөд хэрвээ тэдгээр нь илүү олон хэсгүүдтэй бол функцийг шинэ параметрүүдээр (хэсгүүдийн шинэ массив ба барих шаардлагатай хэсгийн id) дахин ажиллуулна. Ямар ч үүрлэсэн мод ийм байдлаар үүсдэг!

Мод барихын тулд бид кодонд бичнэ:

Echo build_tree($cats,0);

Тиймээс, хоёр алхамаар бид вэбсайтын хэсгүүдийн шаталсан модыг бүтээсэн бөгөөд хичнээн хэсэг байх нь хамаагүй!

UPDХэрэв танд категорийн id-г мэдэж урвуу дарааллаар ангиллын мод хэрэгтэй бол та дараах функцийг ашиглах хэрэгтэй.

find_parent функц ($tmp, $cur_id)( if($tmp[$cur_id]["parent_id"]!=0)( return find_parent($tmp,$tmp[$cur_id]["parent_id"]); ) буцах ( int)$tmp[$cur_id]["id"]; )

Энэ функц нь ангиллын массивыг авдаг бөгөөд тэдгээрийн түлхүүр нь категорийн id болон дээшлэх шаардлагатай ангиллын id юм.

Ийм модыг бүтээхийн тулд build_tree функцийг дараах параметрүүдээр ажиллуулна.

Цуурай бүтээх_мод($муур,0,эцэг эхийг олох($муурын_ID, ТАНЫ_АНГАЛИЙН_ID));

Асуулт байна уу? Сэтгэгдэл дээр асуугаарай

WordPress-ийн шүтэн бишрэгчид өдөр бүр нэмэгдсээр байгаа бөгөөд ихэнх нь энэ хөдөлгүүрийг зүгээр л CMS болгон ашигладаг. Энэ нь маш энгийн бөгөөд шинэхэн програмист биш ч гэсэн үүнийг ойлгож чадна. Доор би олон дэвшилтэт блог хөтлөгчдийн ашигладаг хэд хэдэн арга техникийг харуулах болно, эдгээр аргууд нь голчлон ашиглахад чиглэгддэг;

1) Динамик цэсийн арын гэрэлтүүлэг

Динамик цэсийг хэрхэн тодруулах вэ, жишээ нь, . Бид нөхцөл бичдэг: хэрэв энэ нь Нүүр хуудас / Ангилал / Архив / Хайлт / Ганц хуудасны эхний хуудас бол li таг дээр class=current гэж нэмнэ (үүнийг Галерей гэж тодотгох болно). Хоёрдахь элемент нь "Тухай" бол "одоогийн" ангиллыг нэмнэ. гэх мэт.

2) Гарчиг дахь динамик шошгууд

Хуудасны динамик толгойг ашиглахын тулд 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) Динамик агуулга:

Хэрэв та зарим контентыг зөвхөн эхний хуудсанд байлгахыг хүсвэл дараахыг бичнэ үү.

5) Тусдаа ангиллын сэдвийг хэрхэн өөрчлөх вэ

Та тодорхой ангиллын нийтлэлийн сэдвийг өөрчлөхийг хүсч байна гэж бодъё. Үүнийг хийхийн тулд та in_category функцийг ашиглаж болно.
Хэрэв өгөгдмөл нь single.php бол энэ кодыг ашиглана уу. Хэрэв 1-р категорийн нийтлэлд single1.php, 2-р ангилалд single2.php, бусад нь single_other.php-г ашигладаг.

бичлэг; if ( in_category("1" ) ) ( оруулах (TEMPLATEPATH . "/single1.php" ) ; ) elseif ( in_category("2" ) ) ( (TEMPLATEPATH. "/single2.php" ) ; ) else ( оруулах ( TEMPLATEPATH. "/single_other.php" ); ) ? >

бичлэг; if (in_category("1")) ( include(TEMPLATEPATH . "/single1.php"); ) elseif (in_category("2")) ( include(TEMPLATEPATH . "/single2.php"); ) else ( оруулах( TEMPLATEPATH. "/single_other.php"); ) ? >

Саяхан нэг блог дээр үүнтэй төстэй сэдэв хөндөгдсөн бөгөөд би блогын гадаад холбоосыг арилгахын тулд үүнийг ашиглах шаардлагатай болсон.

6) Өвөрмөц категорийн сэдэв

Хэрэв та тодорхой ангилалд зориулсан тусгай сэдэв хүсч байвал яах вэ? Энэ ангиллын сэдвийг категори-2.php нэрээр хадгалъя (яг энэ загварыг ашиглан!). Тиймээс, категори-2.php-ийг 2-р категороор, категори-3.php-г ID 3-аар зэрэг ашиглах болно.

Асуудлыг шийдвэрлэхэд нэлээд хялбар байдаг. Үүнийг хийхийн тулд бид гогцоонд хувьсагчийг ($loopcounter) тохируулах хэрэгтэй. Хэрэв $loopcounter 1-ээс бага эсвэл тэнцүү бол google-ad.php кодыг оруулсан болно.

// гогцоо бөглөнө

// гогцоо бөглөнө

Асуулгын бичлэгүүд

Query Posts нь гогцоо доторх нийтлэлүүдийн гаралтыг хянахад ашиглагддаг. Энэ нь юуг гаргах, хэзээ гаргах, хэрхэн гаргахыг хянах боломжийг олгодог.

8) Хамгийн сүүлийн үеийн нийтлэлүүдийг харуулах

Сүүлийн 5 бичлэг:

  • ">

  • ">

9) Тодорхой ангиллын бичлэгүүд

  • ">

  • ">

Бид категорийн (categoryID 2) дэлгэцийг хасах хэрэгтэй гэж бодъё:

// энд гогцоо

// энд гогцоо

Тусгай талбарууд

Custom Field нь нийтлэлийн дараа мэдээллийг харуулахад ихэвчлэн ашиглагддаг маш хэрэгтэй зүйл юм. Жишээлбэл, нийтлэлийн зохиогчийн талаарх мэдээллийг харуулахад ашигладаг.

Эхлээд нийтлэлд Custom Field нэмье.

Зургийг харуулах, нийтлэлийн холбоосыг хавсаргахын тулд бид дараах кодыг гогцоонд байрлуулна (нийтлэлийн текстийн өмнө):

//зураг авах (захиалгат талбар) ?> ID, "нийтлэл_зураг", үнэн); ?> "> " alt=" !}" />

ID, "нийтлэл_зураг", үнэн); ?> "> " alt="!}" />

Нийтлэлийн дараа хэд хэдэн захиалгат талбар байж болно гэдгийг бүү мартаарай. Үүнтэй төстэй нөлөөг Шилдэг вэб галерейгаас харж болно, үүнд өнгөц зураг, URL холбоос болон мэдээллийг онцлон харуулах нь ижил төстэй байдлаар харагдана. Та мөн энэ нийтлэл дэх захиалгат талбаруудын талаар уншиж болно - WordPress дахь өөрчлөн талбаруудыг ашиглах.

WP жагсаалтын хуудас

Wp_list_pages шошго нь толгой болон хажуугийн хэсэгт хуудасны жагсаалтыг харуулахад хэрэглэгддэг

12) Сайтын газрын зураг

Сайтын газрын зургийг харуулахын тулд энэ кодыг sitemap.php хуудсанд нэмнэ үү

PageID 12-г хассан болохыг анхаарна уу, учир нь... Энэ хуудас нь өөрөө sitemap.php бөгөөд харуулах шаардлагагүй...
Энэ арга нь үр дүнтэй боловч илүү стандарт аргыг ашиглах, залгаас ашиглан сайтын газрын зургийг бүтээх нь илүү дээр юм.

13) Динамик дэд хуудасны цэс

Энэ кодыг sidebar.php-д нэмснээр тухайн хуудсанд дэд хуудас байгаа бол дэд хуудасны цэс гарч ирнэ.

ID. "&echo=0" ); хэрэв ($ хүүхдүүд) ( ?>

ID."&echo=0"); хэрэв ($ хүүхэд) ( ?>

14) Хуудасны сэдэв

Блогтоо шинэ сэдвийг тохируулах боломжийг олгодог Page Template гэх мэт функцийг алдахгүй байх нь сайхан байх болно. Эхлээд та сэдвээ өөрөө үүсгэх хэрэгтэй, дараа нь хуудсандаа өөрийн сэдвийг өгөх хэрэгтэй. Энэ нь иймэрхүү харагдаж байна (жишээ нь portfolio.php)

/* Загварын нэр: Портфолио */ ?> // энд гогцоо

// энд гогцоо

Хуудсыг бичих эсвэл засварлахдаа баруун талд "Хуудасны загвар" гарч ирэх бөгөөд тэнд хүссэн сэдвийг зааж өгнө.

WordPress сонголтууд

Бидний хамгийн сүүлд авч үзэх зүйл бол WordPress өөрөө болон ерөнхийдөө блогт зориулсан сонголтууд байх болно.

15) Эхлэх хуудас

Анхдагч байдлаар WordPress нь блогийг сайтын эхлэл хуудсанд байрлуулдаг. Гэхдээ хэрэв та өөр хуудас, жишээлбэл, тавтай морилно уу хуудас авахыг хүсвэл Admin > Options > Reading руу очно уу.

16) Хуудасны хаягууд

Анхдагч байдлаар WordPress нь Permalinks www.yoursite.com/?p=123 гэх мэт үзэсгэлэнтэй, хайлтын системд ойлгомжгүй холбоосуудыг ашигладаг. Гэхдээ та үүнийг Admin > Options > Permalinks хэсэгт өөрчилж болно. Хаяг бичих сайн сонголт бол: /% категори%/% шуудангийн нэр%/

Анхдагч байдлаар, WordPress нь "категори" гэсэн категорийн угтварыг ашигладаг (жишээ нь yoursite.com/category/cat-name/). Харин үүнийг "нийтлэл"-ээр солихын тулд Options > Permalinks руу очвол холбоосууд нь дараах байдлаар харагдах болно: yoursite.com/article/cat-name/

Хэрэв та хүсвэл тусгай залгаасуудыг ашиглан угтвар бичээрэй.

WordPress-д зориулсан эдгээр 17 заль мэх нь Михаилд баярлалаа. Олон сонирхолтой мэдээлэл цуглуулсан вэб дизайны талаар түүний блогоос бас олон хэрэгтэй зүйл олж болохыг сануулъя. Зарчмын хувьд зарим хакеруудыг аль хэдийн авч үзсэн боловч ийм төрлийн давталт нь гэмтээхгүй. Боломжтой бол би асуудлыг нарийвчлан авч үзсэн бүрэн хэмжээний (илүү нарийвчилсан) холбоосыг нэмсэн. Хэдийгээр энэ нь эхлэгчдэд зориулагдсан боловч нийтлэлд өгөгдсөн код нь туршлагатай хөгжүүлэгчдэд хангалттай байх болно; Та энд хэрэгтэй зүйлээ өөрөө нэмж болно гэж бодож байна :)

P.S. Хамгаалагч. Дизайнаар нухацтай ажиллахаар төлөвлөж буй хүмүүст зориулж вэб дизайны тухай сайхан видео хичээлүүд байх болно - Украйн хэл! - сайтын уншигчидтай нэгдээрэй.
LensMaster онлайн дэлгүүр нь контакт линз, өнгөт контакт линз, түүнчлэн шийдэл, дагалдах хэрэгслийг санал болгодог.

Блогын бүх уншигчдад энэ өдрийн мэндийг хүргэе WordPress дотор 2011 онд та бүхэнд ирж буй болон удахгүй болох баярын мэндийг дэвшүүлж, дараагийн 360 хоногт эрүүл энх, аз жаргал, баяр баясгалантай байхыг хүсэн ерөөе. Би дараагийн 2011 оны төлөвлөгөөний талаар нийтлэлдээ амласанчлан би бүх үндсэн блогуудаа бага зэрэг сайжруулахаар ажиллаж байна - системийг шинэчлэх, залгаасуудын хамгийн сүүлийн хувилбарыг суулгах, оновчтой болгох, алдаа засах зорилгоор загваруудыг судлах. Энэ ажил маш хэцүү байсан, би бүр маш хэцүү гэж хэлэх болно - та нэг алдаа олж, үүнийг засахаар шийдсэн бөгөөд таны өмнө 5 тусдаа төсөл байгаа бөгөөд тус бүрдээ залруулга хийх хэрэгтэй. За, би энэ бүгдийг хийхээр төлөвлөж байсан тул буцах зүйл байхгүй, үүний зэрэгцээ би энэ үйл явцад нэмэлт туршлага хуримтлуулж, шинэ блог нийтлэлүүдийн 5-6 сэдвийг аль хэдийн олсон байна :) Өнөөдөр бид энэ талаар ярих болно. ангилал, тэдгээрийг харуулах функцууд.

Өмнөх блогын нийтлэлүүдийн нэгэнд би тусалдаг хакердсаныг нийтэлсэн. Энэхүү шийдлийг wp_list_categories функцийг ашиглан хажуугийн самбарт категорийн жагсаалтыг харуулах функцэд ашигласан. Гаралт нь иймэрхүү байх болно:

Аюулгүй байдал

Хэрэв гарчгийн шинж чанар нь SEO-ийн хувьд дор хаяж тодорхой ач холбогдолтой бол энэ бүх шаардлагагүй текст биш харин категорийн нэрийг тэнд байрлуулах нь илүү ашигтай байх болно. Үнэндээ дээрх хакердах холбоос нь энэ асуудлыг шийдвэрлэхэд тусалсан. Гэхдээ энд асуудал байна, энэ бүхэн нь үнэн байсан (ажилласан) бөгөөд энэ нь гарсан жагсаалтыг шууд харуулахгүйгээр урьдчилан боловсруулах боломжийг олгосон юм. Харин категорийг харуулах бусад функцуудын талаар юу хэлэх вэ? - энэ бол асуулт юм.

Жишээлбэл, өнөөдөр би тодорхой нийтлэлийн категорийн жагсаалтыг харуулахдаа холбоосын гарчгийн шинж чанарт олон тооны шаардлагагүй текст бичигдсэн болохыг санамсаргүйгээр олж мэдсэн.

Бүх асуудал нь үүнийг энд ашигладаг байсан категори функц, харамсалтай нь та дуудлагын үр дүнг шууд харуулахгүйн тулд параметрийг тохируулах боломжгүй. Гэхдээ WordPress нь өөр нэг функцтэй get_the_category бөгөөд энэ нь тодорхой нийтлэлд зориулсан категорийн объектуудын массивыг буцаадаг.

категорийн функцийг авах

get_the_category функцийн синтакс нь маш энгийн:

муурны нэр; ?>

Программистууд массивын 0 параметр нь эхний элементийг гаргадгийг мэддэг бөгөөд энэ нь үнэндээ энэ код хэрхэн ажилладагийг тайлбарладаг.

ID); var_dump($ категориуд); ?>

ID); var_dump($ категориуд); ?>

Үүнийг хийхийн тулд та шуудангийн id-г функцэд параметр болгон дамжуулах хэрэгтэй бөгөөд энэ нь кодонд тохиолддог.

Дашрамд хэлэхэд, би энэ функцийг зарим сайт дээр нийтлэлийн категорийн нэрийг харуулахын тулд ашигладаг, гэхдээ идэвхтэй холбоосгүй - энэ нь зүгээр л хуудсан дээрх нэмэлт хэрэгтэй текст юм. Энэ тохиолдолд та дараах кодыг ашиглаж болно.

муурны нэр. " " ; ) ?>

муурны нэр. ""; ) ?>

За, эцэст нь бид бага зэрэг бодсоны эцэст the_category функцийг ашиглахгүйгээр нийтлэлийн категорийн жагсаалтыг гаргах хакерыг олж, үүнийг get_the_category-ээр амжилттай сольсон. Хэрэв та загвар доторх категориудыг харуулсан газар, жишээ нь archive.php файл руу шууд код нэмэхийг хүсвэл дараах зүйлийг бичнэ үү.

Та зарчмын хувьд категориудыг харуулах кодыг функцийн файлд байрлуулж, дараа нь загвар файлууд доторх ангиллыг шинэ функц болгон өөрчлөх боломжтой, жишээ нь my_thecat(). Мэдээжийн хэрэг, солихын өмнө functions.php файлд тохирох кодыг нэмэхээ бүү мартаарай:

функц my_thecat() ( global $post ; foreach ((get_the_category($post -> ID ) ) as $category ) ( echo " cat_ID ) . "" title="" . $category -> cat_name. "">". $ ангилал -> муурны нэр. "; " ; ))

функц my_thecat() ( global $post; foreach((get_the_category($post->ID)) гэж $category) ( цуурай "муур_ID)."" title="".$category->муурын_нэр."">".$ ангилал->муурын нэр."; "; ) )

Би үүнийг туршиж үзсэн, бүх зүйл ажиллаж байна. Зөвхөн нэг асуулт үлдэж байна - энэ бүхэн хэр хэрэгтэй, маш хэрэгтэй вэ? Хэрэв танд хамгийн сайн болгохыг хүсч буй байнгын дизайнтай нэг блог байгаа бол та хэдэн минут зарцуулж, зохих өөрчлөлтүүдийг хийж болно. Хэрэв танд ийм олон блог байгаа бол гарчгийг удирдах нь ямар ч онцгой SEO ашиг тус авчрахгүй гэж би бодож байна, энэ нь Rotapost дээр эдгээр бүх төслүүдийн холбоосыг худалдаж авах нь илүү хялбар байдаг - дашрамд хэлэхэд, TIC-ийг нэмэгдүүлэх туршилт. систем амжилттай, эерэгээр дууссан тул удахгүй энэ талаар тайлан гарах болно.

Захиалгат нийтлэлийн ангиллыг харуулж байна

Тайлбараас харахад дээрх жишээнүүд нь захиалгат (хэрэглэгч) нийтлэлийн төрлүүдэд тохирохгүй байна. Би ийм асуудалтай тулгараагүй байгаа тул би танд зөвхөн англи хэл дээрх блогууд дээр wordpress custom post type show категорийн түлхүүр үг ашиглан шийдлийг google-ээс хайж олох эсвэл Stinker хэрэглэгчийн зөвлөмжийг (сэтгэгдэлээс) ашиглахыг зөвлөж байна. Ангилалууд харагдаж байгаа газарт та кодыг оруулахад л хангалттай.

Энд categoria_video нь хэрэглэгчийн нийтлэлийн ангилал зүй юм (өөрөөр хэлбэл заншил). Одоо хаанаас, юунаас илүү дэлгэрэнгүй. Жишээлбэл, бидэнд байна:

// Видео бичлэгийн төрөлхэрэв ( ! function_exists ( "video_cp" ) ) ( функц video_cp() ( $labels = массив ( "нэр" => _x( "Видео" , "Нийтлэлийн ерөнхий нэр" , "видео" ) , "ганц_нэр" => _x ( "Видео" , "Нийтлэлийн төрөл ганцаарчилсан нэр" , "видео" ) , "цэсийн_нэр" => __( "Видео" , "видео" ) , "эцэг эхийн_зүйлийн_колон" => __( "Эцэг эх:" , "видео" ) , "бүх_ зүйл" => __( "Бүх видео", "видео" ) , "үзэх_зүйл" => __( "Харах" , "видео" ) , "шинэ_зүйл нэмэх" => __( "Шинэ видео нэмэх", "видео" ) , "шинэ_add" => __( "Видео нэмэх" , "видео" ) , "edit_item" => __( "Видео засварлах", "видео" ) , "update_item" => __( "Видео шинэчлэх" , "видео" ) , "search_items" => __( "Видео хайх", "видео" ) , "not_found" => __( "Одоогүй" " , "видео" ) , "хогийн савнаас_олоогүй" => __( "Сагсанд олдсонгүй", "видео") , ); $args = массив ( "шошго" => $ шошго , "дэмждэг" => массив ( "гарчиг" , "засварлагч", "ишлэл" , ), "тэмдэглэл" => массив ( "категори_видео" ), // бидний доор үүсгэх категори (өөрөөр хэлбэл ангилал зүй)"public" => true , "menu_position" => 5 , "menu_icon" => "dashicons-id-alt" , ); register_post_type("видео", $args); ) add_action("init" , "video_cp" , 0 ); // эхлүүлэх) хэрэв ( ! функц байгаа бол ( "категори_видео" ) ) ( // Сул ажлын байрны ангилалфункц categoria_video() ( $labels = массив ( "нэр" => _x( "Видео ангилал", "Ангилал зүйн ерөнхий нэр" , "категори_видео" ) , "ганц_нэр" => _x( "Ангилал видео", "Ангилал_видео" ) , "цэсийн_нэр" => __( "Ангилал" , "категори_видео" ) , "бүх_ зүйл" => __( "Ангилал" , "категори_видео" ) , "эцэг эх" =_ ( "Эцэг эхийн ангилал видео", "categoria_video" ) , "parent_item_colon" => __( "Эцэг эхийн ангилал видео:", "categoria_video" ) , "шинэ_барааны_нэр" => __( "Шинэ ангилал", "categoria_video" ) , "шинэ_зүйл нэмэх" => __( "Шинэ ангилал нэмэх", "categoria_video" ) , "edit_item" => __( "Ангилыг засах", "categoria_video" ) , "update_item" => __( "Ангилыг шинэчлэх", "categoria_video" ) , "search_items" => __( "Олох" , "категори_видео" ) , "зүйлүүдийг нэмэх эсвэл устгах" => __( "Ангилал нэмэх эсвэл хасах", "categoria_video" ) , "хамгийн_ашигласан_аас_сонгох" => __( "Алдартай хүмүүсийн дундаас хайх", "categoria_video" ) , "not_found" => __( "Одоогүй" , "categoria_video" ) , ); $args = массив ( "шошго" => $ шошго , "шаталсан" => үнэн , "нийтийн" => үнэн , ); бүртгэлийн_таксономи("категори_видео" , массив ("видео" ), $args ); ) add_action( "init" , "categoria_video" , 0 ); // эхлүүлэх }

// Хэрэв (! function_exists("video_cp")) ( функц video_cp() ( $labels = array("name" => _x("Видео", "Нийтлэлийн төрлийн ерөнхий нэр", "видео"), " singular_name" => _x("Видео", "Нийтлэлийн төрөл Ганц нэр", "видео"), "цэсийн_нэр" => __("Видео", "видео"), "эцэг эхийн_зүйлийн_колон" => __("Эцэг эх:", "видео"), "all_items" => __("Бүх видеонууд", "видео"), "үзэх_зүйл" => __("Харах", "видео"), "шинэ_ зүйл нэмэх" => __("Шинэ видео нэмэх" , "видео"), "шинэ_add" => __("Видео нэмэх", "видео"), "edit_item" => __("Видео засварлах", "видео"), "update_item" => __("Видео шинэчлэх" ", "видео"), "search_items" => __("Видео хайх", "видео"), "олодгүй" => __("Олдсонгүй", "видео"), "Хогийн саванд_олоогүй" => __("Бүү" сагсанд олдсон", "видео"),); $args = массив("шошго" => $шошго, "дэмждэг" => массив("гарчиг", "засварлагч", "ишлэл",), "тэмдэглэл" = > array("categoria_video"), // бидний доор үүсгэх категори (өөрөөр хэлбэл ангилал зүй) "public" => true, "menu_position" => 5, "menu_icon" => "dashicons-id-alt",); register_post_type("видео", $args); ) add_action("init", "video_cp", 0); // эхлүүлэх ) хэрэв (! function_exists("categoria_video")) ( // Сул орон тоо функцын ангилал categoria_video() ( $labels = array("name" => _x("Видео ангилал", "Таксономын ерөнхий нэр", "categoria_video "), "singular_name" => _x("Ангилал видео", "Ангилал_видео"), "цэсийн_нэр" => __("Ангилал", "категори_видео"), "бүх_ зүйл" => __(" Ангилал", "категори_видео"), "эцэг эхийн_барааны_нэр" => __("Эцэг эхийн ангилал видео", "категори_видео"), "эцэг_эцэг_зүйлийн_колон" => __("Эцэг эхийн ангилал видео:", "категори_видео"), "шинэ_барааны_нэр" => __("Шинэ ангилал", "категори_видео"), "шинэ_зүйл нэмэх" => __("Шинэ ангилал нэмэх", "категори_видео"), "засвар_засварлах" => __("Ангилыг засах", "категорийн_видео"), "шинэ_зүйл" => __("Ангилыг шинэчлэх", "Ангилал_видео"), "хайлтын_зүйлүүд" => __("Ол", "Ангилал_видео"), "зүйл нэмэх эсвэл хасах" => __("Ангилал нэмэх, хасах", "Ангилал_видео"), " сонгон_хамгийн_хэрэглээ" => __("Алдартай хүмүүсийн дундаас хайх", "категорийн_видео"), "олодгүй" => __("Одоогүй", "категори_видео"),); $args = массив("шошго" => $шошго, "шаталсан" => үнэн, "нийтийн" => үнэн,); бүртгэл_таксономи("категори_видео", массив("видео"), $args); ) add_action("init", "categoria_video", 0); // эхлүүлэх)

Зөвлөгөө өгсөн Stinker хэрэглэгч танд баярлалаа.

P.S. Хамгаалагч. Runet блогуудын нэгэнд бид өндөр чанартай 17 үнэгүй загвараас WordPress багцын сэдвүүдийн гайхалтай сонголтыг олсон.