/* ==========================================================
* Kayseri Care Travel v6.0 - Eenvoudig fotobeheer
* ----------------------------------------------------------
* Extra beheerscherm: Behandelingen > Foto's beheren.
* Hiermee kan de gebruiker zonder zoeken of code per behandeling
* één foto uploaden/kiezen. Die foto wordt automatisch de
* uitgelichte afbeelding en wordt overal in het thema gebruikt.
* ========================================================== */
function kct_v60_admin_menu(){
add_submenu_page(
'edit.php?post_type=kct_treatment',
"Foto's beheren",
"Foto's beheren",
'edit_posts',
'kct-treatment-photos',
'kct_v60_photo_manager_page'
);
}
add_action('admin_menu','kct_v60_admin_menu');
function kct_v60_photo_manager_page(){
if(!current_user_can('edit_posts')) return;
$posts = get_posts(['post_type'=>'kct_treatment','posts_per_page'=>-1,'orderby'=>'title','order'=>'ASC']);
echo '
Behandelingsfoto\'s beheren ';
echo '
Upload hier per behandeling één foto. Deze foto wordt automatisch gebruikt op de behandelingen-overzichtspagina, de detailpagina en alle kaarten. U hoeft dus niet meer in de pagina-inhoud te zoeken.
';
echo '
Werkwijze: klik op Foto kiezen / wijzigen , kies een foto uit de mediabibliotheek of upload een nieuwe foto, en klik daarna op Opslaan in het mediavenster. De wijziging wordt direct opgeslagen.
';
echo '
';
foreach($posts as $post){
$thumb_id = get_post_thumbnail_id($post->ID);
$thumb = $thumb_id ? wp_get_attachment_image_url($thumb_id,'medium') : '';
$edit = get_edit_post_link($post->ID);
echo '
';
echo '
';
if($thumb){ echo '
'; }
else { echo '
Geen foto
'; }
echo '
';
echo '
'.esc_html(get_the_title($post)).' ';
echo '
Foto kiezen / wijzigen
';
echo '
Foto verwijderen Tekst bewerken
';
echo '
';
echo '
';
}
echo '
';
}
function kct_v60_admin_assets($hook){
$screen = function_exists('get_current_screen') ? get_current_screen() : null;
if(!$screen) return;
if($screen->id === 'kct_treatment_page_kct-treatment-photos' || $screen->post_type === 'kct_treatment'){
wp_enqueue_media();
wp_enqueue_script('jquery');
wp_add_inline_style('wp-admin', '.kct-photo-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:18px;margin-top:20px}.kct-photo-card{background:#fff;border:1px solid #dcdcde;border-radius:14px;padding:14px;box-shadow:0 2px 10px rgba(0,0,0,.04)}.kct-photo-card h2{font-size:17px;margin:12px 0 8px}.kct-photo-preview{height:160px;border-radius:12px;overflow:hidden;background:#f0f6f8;border:1px solid #e2e8ee;display:flex;align-items:center;justify-content:center}.kct-photo-preview img{width:100%;height:100%;object-fit:cover}.kct-no-photo{color:#64748b;font-weight:700}.kct-save-status{display:block;color:#008a20;font-weight:600;margin-top:8px}.column-kct_thumb{width:90px}.kct-admin-help{background:#fff;border-left:4px solid #00aeb3;padding:12px 16px;margin:12px 0}');
wp_add_inline_script('jquery', 'jQuery(function($){function savePhoto(card,id,url){card.find(".kct-save-status").text("Opslaan...");$.post(ajaxurl,{action:"kct_v60_set_photo",nonce:"'.wp_create_nonce('kct_v60_photo_nonce').'",post_id:card.data("post"),image_id:id},function(r){if(r&&r.success){if(url){card.find(".kct-photo-preview").html(" ");}else{card.find(".kct-photo-preview").html("Geen foto
");}card.find(".kct-save-status").text("Opgeslagen");setTimeout(function(){card.find(".kct-save-status").text("");},2500);}else{card.find(".kct-save-status").css("color","#b32d2e").text("Niet opgeslagen");}});}$(document).on("click",".kct-v60-pick-photo",function(e){e.preventDefault();var card=$(this).closest(".kct-photo-card");var frame=wp.media({title:"Behandelingsfoto kiezen",button:{text:"Deze foto gebruiken"},multiple:false});frame.on("select",function(){var a=frame.state().get("selection").first().toJSON();var url=(a.sizes&&a.sizes.medium)?a.sizes.medium.url:a.url;savePhoto(card,a.id,url);});frame.open();});$(document).on("click",".kct-v60-remove-photo",function(e){e.preventDefault();var card=$(this).closest(".kct-photo-card");savePhoto(card,0,"");});});');
}
}
add_action('admin_enqueue_scripts','kct_v60_admin_assets');
function kct_v60_set_photo_ajax(){
if(!current_user_can('edit_posts')) wp_send_json_error('Geen rechten');
check_ajax_referer('kct_v60_photo_nonce','nonce');
$post_id = absint($_POST['post_id'] ?? 0);
$image_id = absint($_POST['image_id'] ?? 0);
if(!$post_id || get_post_type($post_id) !== 'kct_treatment') wp_send_json_error('Ongeldige behandeling');
if(!current_user_can('edit_post',$post_id)) wp_send_json_error('Geen rechten');
if($image_id){ set_post_thumbnail($post_id,$image_id); }
else { delete_post_thumbnail($post_id); }
wp_send_json_success(['post_id'=>$post_id,'image_id'=>$image_id]);
}
add_action('wp_ajax_kct_v60_set_photo','kct_v60_set_photo_ajax');
function kct_v60_treatment_columns($cols){
$new=[];
foreach($cols as $k=>$v){
if($k==='cb'){$new[$k]=$v; $new['kct_thumb']='Foto'; continue;}
$new[$k]=$v;
}
return $new;
}
add_filter('manage_kct_treatment_posts_columns','kct_v60_treatment_columns');
function kct_v60_treatment_column_content($col,$post_id){
if($col==='kct_thumb'){
$thumb = get_the_post_thumbnail($post_id,[70,50],['style'=>'width:70px;height:50px;object-fit:cover;border-radius:6px;background:#eef']);
echo $thumb ?: 'Geen foto ';
}
}
add_action('manage_kct_treatment_posts_custom_column','kct_v60_treatment_column_content',10,2);
function kct_v60_admin_notice_photo_help(){
$screen = function_exists('get_current_screen') ? get_current_screen() : null;
if($screen && $screen->post_type === 'kct_treatment' && $screen->base === 'edit'){
echo '';
}
}
add_action('admin_notices','kct_v60_admin_notice_photo_help');
https://kaysericaretravel.nl/wp-sitemap-posts-page-1.xml https://kaysericaretravel.nl/wp-sitemap-posts-kct_treatment-1.xml https://kaysericaretravel.nl/wp-sitemap-users-1.xml