Custom post types i lejojnë zhvilluesit e WordPress të zgjerojnë funksionalitetin e faqes së tyre përtej postimeve dhe faqeve standarde. Duke shtuar një custom post type të quajtur ‘Shërbimet’, mund të shfaqni ofertat e biznesit tuaj në një mënyrë më të organizuar dhe të personalizueshme. Për më tepër, duke shtuar meta boxes të personalizuara, mund të përfshini detaje shtesë për çdo shërbim, si çmimi, kohëzgjatja, ose shërbime të lidhura. Në këtë udhëzues, do të shpjegojmë procesin e krijimit të një custom post type për ‘Shërbimet’ dhe shtimin e meta boxes për të përmirësuar funksionalitetin.
Hapi 1: Regjistroni Custom Post Type ‘Shërbimet’
Për të krijuar një custom post type të ri, duhet ta regjistroni atë duke përdorur funksionin sajdoko_register_post_type
në skedarin functions.php
të temës suaj ose në një plugin të personalizuar. Ja një mënyrë e thjeshtë për të krijuar ‘Shërbimet’ custom post type:
// Regjistroni Custom Post Type 'Shërbimet'
function sajdoko_register_services_post_type() {
$labels = array(
'name' => 'Shërbimet',
'singular_name' => 'Shërbim',
'menu_name' => 'Shërbimet',
'name_admin_bar' => 'Shërbim',
'add_new' => 'Shto të Ri',
'add_new_item' => 'Shto Shërbim të Ri',
'edit_item' => 'Modifiko Shërbimin',
'new_item' => 'Shërbim i Ri',
'view_item' => 'Shiko Shërbimin',
'all_items' => 'Të gjitha Shërbimet',
'search_items' => 'Kërko Shërbime',
'not_found' => 'Nuk u gjet asnjë shërbim.',
'not_found_in_trash' => 'Nuk u gjet asnjë shërbim në kosh.',
);
$args = array(
'labels' => $labels,
'public' => true,
'has_archive' => true,
'supports' => array( 'title', 'editor', 'thumbnail' ),
'menu_icon' => 'dashicons-hammer',
'show_in_rest' => true,
);
register_post_type( 'services', $args );
}
add_action( 'init', 'sajdoko_register_services_post_type' );
Me këtë kod, ne regjistrojmë një post type të quajtur ‘Shërbimet’, i cili do të shfaqet në dashboard-in e WordPress. Ky post type mbështet titullin, editorin dhe imazhin e veçuar (featured image), të cilat janë elementet më të zakonshme që do t’ju duhen kur krijoni një hyrje për një shërbim.
Hapi 2: Shtoni Meta Boxes të Personalizuara për Detaje Shtesë të Shërbimeve
Tani, do të shtojmë meta boxes të personalizuara për post type ‘Shërbimet’. Këto meta boxes do të ruajnë informacion shtesë si çmimi i shërbimit, kohëzgjatja dhe një URL e personalizuar (nëse është e nevojshme). Për ta bërë këtë, nevojitet të shtoni pak kod në skedarin tuaj functions.php
ose në një plugin të personalizuar.
// Shtoni Meta Boxes të Personalizuara
function sajdoko_add_service_meta_boxes() {
add_meta_box(
'service_details', // ID e meta box
'Detajet e Shërbimit', // Titulli i meta box
'sajdoko_render_service_meta_box', // Funksioni për të shfaqur meta box
'services', // Post type
'normal', // Konteksti (normal, anësor, i avancuar)
'default' // Prioriteti
);
}
add_action( 'add_meta_boxes', 'sajdoko_add_service_meta_boxes' );
function sajdoko_render_service_meta_box( $post ) {
// Shto një nonce për siguri
wp_nonce_field( 'services_save_meta_box_data', 'services_meta_box_nonce' );
// Merrni vlerat aktuale
$price = get_post_meta( $post->ID, '_service_price', true );
$duration = get_post_meta( $post->ID, '_service_duration', true );
$url = get_post_meta( $post->ID, '_service_url', true );
// Shfaq fushat e meta box
echo '<label for="service_price">Çmimi i Shërbimit</label>';
echo '<input id="service_price" name="service_price" type="text" value="' . esc_attr( $price ) . '" />';
echo '<p class="description">Shkruani çmimin e shërbimit.</p>';
echo '<br>';
echo '<label for="service_duration">Kohëzgjatja e Shërbimit (në orë)</label>';
echo '<input id="service_duration" name="service_duration" type="text" value="' . esc_attr( $duration ) . '" />';
echo '<p class="description">Shkruani kohëzgjatjen e shërbimit në orë.</p>';
echo '<br>';
echo '<label for="service_url">URL e Personalizuar e Shërbimit</label>';
echo '<input id="service_url" name="service_url" type="text" value="' . esc_attr( $url ) . '" />';
echo '<p class="description">Shkruani një URL të personalizuar për shërbimin.</p>';
}
Kjo kod shton një meta box me titull “Detajet e Shërbimit” për post type ‘Shërbimet’. Kjo ofron fusha për të futur çmimin, kohëzgjatjen dhe URL-në për secilin shërbim. Tani, duhet të ruajmë këto të dhëna kur postimi ruhet.
Hapi 3: Ruani Të Dhënat e Meta Box
Tani që kemi krijuar meta boxes të personalizuara, duhet të sigurohemi që të dhënat e futura ruhen kur postimi përditësohet ose publikohet. Shtoni kodin e mëposhtëm për të trajtuar këtë proces:
// Ruani Të Dhënat e Meta Box
function sajdoko_save_service_meta_boxes( $post_id ) {
// Kontrolloni nëse nonce është caktuar
if ( ! isset( $_POST['services_meta_box_nonce'] ) ) {
return;
}
// Verifikoni nonce
if ( ! wp_verify_nonce( $_POST['services_meta_box_nonce'], 'services_save_meta_box_data' ) ) {
return;
}
// Kontrolloni të drejtat e përdoruesit
if ( ! current_user_can( 'edit_post', $post_id ) ) {
return;
}
// Sigurohuni që fushat e input-it janë caktuar
if ( isset( $_POST['service_price'] ) ) {
$service_price = sanitize_text_field( $_POST['service_price'] );
update_post_meta( $post_id, '_service_price', $service_price );
}
if ( isset( $_POST['service_duration'] ) ) {
$service_duration = sanitize_text_field( $_POST['service_duration'] );
update_post_meta( $post_id, '_service_duration', $service_duration );
}
if ( isset( $_POST['service_url'] ) ) {
$url = esc_url( $_POST['service_url'] );
update_post_meta( $post_id, '_service_url', $url );
}
}
add_action( 'save_post', 'sajdoko_save_service_meta_boxes' );
Kjo siguron që të dhënat e futura në meta boxes ruhen si post meta, në mënyrë që më pas t’i merrni dhe t’i shfaqni kur të jetë e nevojshme.
Hapi 4: Shfaqni Të Dhënat e Meta Box në Front End
Tani që kemi një custom post type me fusha të personalizuara meta, duhet t’i shfaqim këto të dhëna në front-end të faqes. Kjo zakonisht bëhet duke personalizuar skedarët e template-it të temës suaj. Mund të modifikoni template-in e postimit për post type ‘Shërbimet’, që mund të bëhet duke krijuar një skedar single-services.php
në temën tuaj.
// Shfaqni Të Dhënat e Meta në Template
$price = get_post_meta( get_the_ID(), '_service_price', true );
$duration = get_post_meta( get_the_ID(), '_service_duration', true );
$url = get_post_meta( get_the_ID(), '_service_url', true );
if ( $price ) {
echo '<p>Çmimi: ' . esc_html( $price ) . '</p>';
}
if ( $duration ) {
echo '<p>Kohëzgjatja: ' . esc_html( $duration ) . ' orë</p>';
}
if ( $url ) {
echo '<p><a href="' . esc_url( $url ) . '">Më shumë informacion</a></p>';
}
Duke shtuar këtë kod në skedarin single-services.php
të temës suaj, do të shfaqni çmimin, kohëzgjatjen dhe URL-në për secilin shërbim në front-end të faqes tuaj.
Krijimi i një custom post type si ‘Shërbimet’ dhe shtimi i meta boxes të personalizuara mund të përmirësojë shumë mënyrën si shfaqni përmbajtje të specializuara në faqen tuaj të WordPress. Ky konfigurim ju lejon të mbani faqen të organizuar, të përmirësoni përvojën e përdoruesit dhe ta bëni menaxhimin e përmbajtjes më efikas. Pasi të keni përfunduar këtë konfigurim bazë, mund ta zgjeroni atë më tej me më shumë fusha, taksonomi të personalizuara dhe madje edhe funksionalitet kërkimi të avancuar për të ndihmuar vizitorët të gjejnë shërbimet që kërkojnë.
Po kërkoni më shumë mënyra për të personalizuar WordPress? Shikoni udhëzuesin tonë për template të custom post types për më shumë informacione!