/* ========================================================== * 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 '

'; echo '

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 '

Foto aanpassen? Ga naar Behandelingen → Foto\'s beheren. Daar kunt u per behandeling direct een foto uploaden.

'; } } add_action('admin_notices','kct_v60_admin_notice_photo_help'); https://kaysericaretravel.nl/wp-sitemap-posts-page-1.xmlhttps://kaysericaretravel.nl/wp-sitemap-posts-kct_treatment-1.xmlhttps://kaysericaretravel.nl/wp-sitemap-users-1.xml