Welcome to WordPress. This is your first post. Edit or delete it, then start writing!
<?php
/**
* Plugin Name: Planificare Curs 6 Săptămâni
* Description: Sistem de planificare pentru cursuri de 6 săptămâni în WordPress
* Version: 1.0
* Author: Tu
*/
// Înregistrare Custom Post Type pentru Cursuri
function curs_post_type() {
$labels = array(
'name' => 'Cursuri',
'singular_name' => 'Curs',
'add_new' => 'Adaugă Curs Nou',
'add_new_item' => 'Adaugă Curs Nou',
'edit_item' => 'Editează Curs',
'new_item' => 'Curs Nou',
'view_item' => 'Vezi Curs',
'search_items' => 'Caută Cursuri',
'not_found' => 'Nu s-au găsit cursuri',
'menu_name' => 'Cursuri'
);
$args = array(
'labels' => $labels,
'public' => true,
'has_archive' => true,
'menu_icon' => 'dashicons-calendar-alt',
'supports' => array('title', 'editor', 'thumbnail'),
'rewrite' => array('slug' => 'cursuri'),
'show_in_rest' => true,
);
register_post_type('curs', $args);
}
add_action('init', 'curs_post_type');
// Adăugare Metabox pentru detaliile cursului
function curs_add_metaboxes() {
add_meta_box(
'curs_detalii',
'Detalii Curs',
'curs_detalii_callback',
'curs',
'normal',
'high'
);
}
add_action('add_meta_boxes', 'curs_add_metaboxes');
// Callback pentru metabox
function curs_detalii_callback($post) {
wp_nonce_field('curs_save_meta', 'curs_meta_nonce');
$data_start = get_post_meta($post->ID, '_curs_data_start', true);
$durata_saptamani = get_post_meta($post->ID, '_curs_durata_saptamani', true) ?: 6;
echo '<div style="margin-bottom: 20px;">';
echo '<label style="display: block; margin-bottom: 5px;"><strong>Data de Start:</strong></label>';
echo '<input type="date" name="curs_data_start" value="' . esc_attr($data_start) . '" style="width: 100%;" />';
echo '</div>';
echo '<div style="margin-bottom: 20px;">';
echo '<label style="display: block; margin-bottom: 5px;"><strong>Durată (săptămâni):</strong></label>';
echo '<input type="number" name="curs_durata_saptamani" value="' . esc_attr($durata_saptamani) . '" min="1" max="52" style="width: 100px;" />';
echo '</div>';
echo '<h3>Planificare Săptămânală</h3>';
for ($i = 1; $i <= 6; $i++) {
$titlu = get_post_meta($post->ID, '_curs_saptamana_' . $i . '_titlu', true);
$continut = get_post_meta($post->ID, '_curs_saptamana_' . $i . '_continut', true);
echo '<div style="border: 1px solid #ddd; padding: 15px; margin-bottom: 15px; background: #f9f9f9;">';
echo '<h4>Săptămâna ' . $i . '</h4>';
echo '<label style="display: block; margin-bottom: 5px;"><strong>Titlu:</strong></label>';
echo '<input type="text" name="curs_saptamana_' . $i . '_titlu" value="' . esc_attr($titlu) . '" style="width: 100%; margin-bottom: 10px;" placeholder="Ex: Introducere în..." />';
echo '<label style="display: block; margin-bottom: 5px;"><strong>Conținut:</strong></label>';
echo '<textarea name="curs_saptamana_' . $i . '_continut" rows="4" style="width: 100%;" placeholder="Descriere detaliată a săptămânii...">' . esc_textarea($continut) . '</textarea>';
echo '</div>';
}
}
// Salvare date metabox
function curs_save_meta($post_id) {
if (!isset($_POST['curs_meta_nonce']) || !wp_verify_nonce($_POST['curs_meta_nonce'], 'curs_save_meta')) {
return;
}
if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) {
return;
}
if (!current_user_can('edit_post', $post_id)) {
return;
}
if (isset($_POST['curs_data_start'])) {
update_post_meta($post_id, '_curs_data_start', sanitize_text_field($_POST['curs_data_start']));
}
if (isset($_POST['curs_durata_saptamani'])) {
update_post_meta($post_id, '_curs_durata_saptamani', intval($_POST['curs_durata_saptamani']));
}
for ($i = 1; $i <= 6; $i++) {
if (isset($_POST['curs_saptamana_' . $i . '_titlu'])) {
update_post_meta($post_id, '_curs_saptamana_' . $i . '_titlu', sanitize_text_field($_POST['curs_saptamana_' . $i . '_titlu']));
}
if (isset($_POST['curs_saptamana_' . $i . '_continut'])) {
update_post_meta($post_id, '_curs_saptamana_' . $i . '_continut', sanitize_textarea_field($_POST['curs_saptamana_' . $i . '_continut']));
}
}
}
add_action('save_post_curs', 'curs_save_meta');
// Afișare planificare pe frontend (adaugă în single-curs.php sau folosește filtru)
function curs_afisare_planificare($content) {
if (is_singular('curs') && in_the_loop() && is_main_query()) {
$post_id = get_the_ID();
$data_start = get_post_meta($post_id, '_curs_data_start', true);
$durata = get_post_meta($post_id, '_curs_durata_saptamani', true) ?: 6;
$html = '<div class="curs-planificare" style="margin-top: 30px;">';
if ($data_start) {
$data_inceput = new DateTime($data_start);
$data_sfarsit = clone $data_inceput;
$data_sfarsit->modify('+' . ($durata - 1) . ' weeks');
$html .= '<div style="background: #f0f8ff; padding: 20px; border-left: 4px solid #0073aa; margin-bottom: 30px;">';
$html .= '<h3 style="margin-top: 0;">📅 Informații Curs</h3>';
$html .= '<p><strong>Data de start:</strong> ' . $data_inceput->format('d.m.Y') . '</p>';
$html .= '<p><strong>Data de finalizare:</strong> ' . $data_sfarsit->format('d.m.Y') . '</p>';
$html .= '<p><strong>Durată:</strong> ' . $durata . ' săptămâni</p>';
$html .= '</div>';
}
$html .= '<h2>📚 Planificare Săptămânală</h2>';
for ($i = 1; $i <= $durata; $i++) {
$titlu = get_post_meta($post_id, '_curs_saptamana_' . $i . '_titlu', true);
$continut = get_post_meta($post_id, '_curs_saptamana_' . $i . '_continut', true);
if ($titlu || $continut) {
if ($data_start) {
$data_saptamana = clone $data_inceput;
$data_saptamana->modify('+' . ($i - 1) . ' weeks');
$data_text = $data_saptamana->format('d.m.Y');
}
$html .= '<div style="border: 1px solid #ddd; padding: 20px; margin-bottom: 20px; border-radius: 5px; background: white;">';
$html .= '<h3 style="color: #0073aa; margin-top: 0;">Săptămâna ' . $i;
if (isset($data_text)) {
$html .= ' <span style="font-size: 0.8em; color: #666;">(' . $data_text . ')</span>';
}
$html .= '</h3>';
if ($titlu) {
$html .= '<h4 style="margin: 10px 0;">' . esc_html($titlu) . '</h4>';
}
if ($continut) {
$html .= '<p>' . nl2br(esc_html($continut)) . '</p>';
}
$html .= '</div>';
}
}
$html .= '</div>';
return $content . $html;
}
return $content;
}
add_filter('the_content', 'curs_afisare_planificare');
// Shortcode pentru afișarea unui curs specific
function curs_shortcode($atts) {
$atts = shortcode_atts(array(
'id' => 0,
), $atts);
if (!$atts['id']) {
return '<p>ID curs lipsă!</p>';
}
$post = get_post($atts['id']);
if (!$post || $post->post_type !== 'curs') {
return '<p>Curs negăsit!</p>';
}
setup_postdata($post);
$content = apply_filters('the_content', $post->post_content);
wp_reset_postdata();
return $content;
}
add_shortcode('curs_planificare', 'curs_shortcode');
Hi, this is a comment.
To get started with moderating, editing, and deleting comments, please visit the Comments screen in the dashboard.
Commenter avatars come from Gravatar.