Многу често во многу проекти клиентите имаат потреба од креирање на custom post types. Custom post types се посебни типови на постови во самиот WordPress (пример: Events, Projects итн.). Дури и самите страници (pages) во WordPress се сметаат за еден вид на custom post types.
За појасно и поедноставно да ви ја доловам суштината и корисноста на овие custom post types, замислете пример каде клиентот сака во самиот dashboard да има посебни табови за настани, проекти, апартмани итн., наместо дифолтните ‘post’ и ‘page’. На пример клиент кој е агенција за недвижности има потреба да си внесува на веб страната апартмани, станови, куќи, агенти итн. Се тоа се посебни custom post types.
Зошто php код, а не плагин?
Кога работиме со WordPress, најчесто имаме навика секој предизвик и барање на клиентот да го решиме со плагин, без разлика колку и да е едноставно тоа барање. Секако доколку барањето е комплексно и веќе има искодирано готово и квалитетно решение во форма на бесплатен или премиум плагин, пологично е да се искористи тој плагин/додаток. Но, сепак, доколку проблемот може да се реши ефикасно со неколку линии php код, тогаш ви препорачувам секогаш да го изберете второто.
Причината поради тоа е генерално дводимензионална. Прво, тука е секако безбедноста и потребата од ажурирање на плагините. Значи, доколку сами сте го напишале кодот, знаете дека тоа е тоа, а од друга страна кај надворешните плагини, имате непотребни линии код или евентуално backdoors, преку кои во иднина може да ви ја хакираат веб страната. Тоа се навистина непотребни ризици. Втората причина е секако оптимизацијата на веб страната, на која трупањето на голем број на плагини влијае обратнопропорционално.
Во оваа статија ќе ви објаснам како на наједноставен начин, со помош на php код, да креирате custom post types во WordPress.
Во File Manager креирајте фолдер mu-plugins
Знам дека прво што ви паѓа на памет е кодот да го внесете во фајлот functions.php, кој е еден од базичните фајлови на темата која ви е активна. Секако тоа е еден од начините, но е далеку од идеалниот, со оглед дека доколку ја промените темата, оваа функционалност нема да ви биде активна и ќе треба наново да го пишувате истиот код во новата тема.
Затоа најдобро решение е да се креира mu-plugins фолдер (кој е кратенка од must used plugins) во следната патека во File Manager: public_html > wp-content. Фолдерот го именувате mu-plugins. Секој php код кој постои во овој фолдер секогаш автоматски веднаш ќе биде активиран од страна на WordPress. Внатре во фолдерот креирате нов php фајл, кој може да го именувате по ваш избор, но од аспект на јасност секогаш е најдобро да го именувате според функцијата која ја извршува (пр: tivius_post_type.php).
Првиот чекор е да креираме функција која може да ја именуваме по наш избор (пр: function tivius_post_types() ). Понатаму ја повикуваме WordPress функцијата register_post_type (), која е дел од многубројните php функции кои ги нуди WordPress и кои значително ни ја олеснуваат работата при самото кодирање.
Во функцијата се ставаат два аргументи: името на custom post type-от и array од различни опции кои го опишуваат нашиот custom post type кој сакаме да го креираме (види 4-ти ред од кодот подолу).
<?php function tivius_post_types() { //Professor post type register_post_type('project', array( 'show_in_rest' => true, 'supports' => array('title', 'editor'), 'public' => true, 'labels' => array( 'name' => 'Professors', 'add_new_item' => "Add New Project", 'edit_item' => 'Edit Project', 'all_items' => 'All Projects', 'singular_name' => 'Project' ), 'menu_icon' => 'dashicons-portfolio' )); } add_action('init', 'tivius_post_types'); ?>
За да го опишеме нашиот custom post type користиме associative array. Параметарот ‘labels’ од друга страна содржи nested array со следниве под-параметри: ‘name’, ‘add_new_item’, ‘edit_item’ итн. На следниов линк на официјалната страна на WordPress.org, може да ги погледнете сите можности на WordPress функцијата register_post_type().
Иницирајте ја функцијата
Финално, за да му дадеме наредба на WordPress да креираме нов тип на пост new custom post type), треба да креираме посебен hook, т.е. го користиме hook-от ‘init’ и финално го внесуваме името на функцијата: add_action (‘init’, ‘tivius_post_types’);. На овој начин WordPress во право време ќе ја повика функцијата која претходно ја креиравме и која има за цел да креира custom post type.
Штом го комплетирате се ова, може слободно да креирате New Project или било што поставивте како custom post type. Не заборавајте одново да ги зачувате пермалинковите во работната табла кај Settings > Permalinks > Save Changes.
Во некоја следна статија ќе објаснам како со php може да креирате архива од сите custom post types кои сте ги креирале (пример од сите проекти во горниот пример), како и како да креирате custom wordpress query кој ќе прикажува листа само од одредени custom post types.
Доколку имате потреба од искусен тим за веб дизајн со портфолио од преку 80 изработени веб страни, може да резервирате услуга на следниов линк за резервација.