Lyme Disease Recognition and Management: Clinical Insights for PharmacistsManaging Acute Cough in Pharmacy PracticeBeyond Benzodiazepines: The Pharmacist’s Role in Advancing Chronic Insomnia Treatment with DORAsAcute Pain Management in Pharmacy Practice: Oral and Topical AnalgesicsCommon Ailments in Community Pharmacy: A Collaborative Approach to CareOptimizing Cardiovascular Care: Risk and Lifestyle Management for Older Adults
Puissance VAX : Rehausser la couverture vaccinale grâce à une approche rapide et factuelleAu-delà des benzodiazépines : le rôle du pharmacien dans l’avancement du traitement de l’insomnie chronique avec les ADROTraitement de la douleur aiguë en pratique de la pharmacie : Analgésiques oraux et topiquesPrévention du VRS pour tous les nourrissonsMobiliser la technologie SCGtr et rehausser l’impact du pharmacien dans les soins du diabèteTraitement de la toux aiguë en contexte de pratique pharmaceutique
Trouvez votre prochain cours
Parcourez les derniers cours de formation continue en pharmacie.
Catégories
Professions
Régions
Accreditations
“No courses were found based on your selected filters. Feel free to check back later as new courses are added regularly.”
(function() {
var ajaxurl = window.ajaxurl ||
(window.wp && wp.ajax && wp.ajax.settings && wp.ajax.settings.url) ||
'/wp-admin/admin-ajax.php';
var injecting = false;
var lastInjectedAt = 0;
var afterIndex = 3; // insert AFTER the 4th item → appears as #5
// Target this specific FacetWP results inside your wrapper
function getContainer() {
return document.querySelector('.coursesListWrapper .facetwp-template') ||
document.querySelector('.facetwp-template');
}
function getItems(c) { return c ? c.querySelectorAll('.e-loop-item') : []; }
function reflowGrid() {
try {
if (window.elementorFrontend?.elements?.$window) {
elementorFrontend.elements.$window.trigger('resize');
} else if (typeof jQuery !== 'undefined') {
jQuery(window).trigger('resize');
} else {
window.dispatchEvent(new Event('resize'));
}
} catch (e) {}
}
// --- PURGE HELPERS ---------------------------------------------------------
var PURGE_SELECTOR = '.rxbri-courses-rectangle-placement, .rxbri-course-ads-placement, .rxbri-blog-ads-placement, .mdbc2-carousel-ads-placement';
function purgeStrays(container) {
if (!container) return;
document.querySelectorAll(PURGE_SELECTOR).forEach(function(el) {
if (container.contains(el) && !el.closest('.course-ads-slot')) el.remove();
});
}
function purgeBurst(container) {
purgeStrays(container);
setTimeout(function(){ purgeStrays(container); }, 50);
setTimeout(function(){ purgeStrays(container); }, 150);
setTimeout(function(){ purgeStrays(container); }, 300);
setTimeout(function(){ purgeStrays(container); }, 600);
}
// ---------------------------------------------------------------------------
function injectAd() {
// throttle in case 'facetwp-loaded' fires twice quickly
var now = Date.now();
if (now - lastInjectedAt < 200) return;
lastInjectedAt = now;
if (injecting) return;
injecting = true;
var c = getContainer();
if (!c) { injecting = false; return; }
// HARD CLEAN first
purgeBurst(c);
// Remove previously injected ad (ours)
c.querySelectorAll('.course-ads-slot').forEach(function(el){ el.remove(); });
var it = getItems(c);
var count = it.length;
if (count === 0) {
purgeBurst(c);
injecting = false;
return;
}
var targetEl = (count > afterIndex) ? it[afterIndex] : it[count - 1];
fetchAndInsert(c, targetEl);
}
function fetchAndInsert(container, afterEl) {
var xhr = new XMLHttpRequest();
var data = new FormData();
data.append('action', 'my_get_advads_placement');
data.append('placement', 'courses-rectangle-placement'); // your placement slug
xhr.onreadystatechange = function() {
if (xhr.readyState === 4) {
if (xhr.status === 200) {
try {
var resp = JSON.parse(xhr.responseText);
if (resp && resp.success && resp.data) {
// final sweep before inserting
purgeBurst(container);
var wrap = document.createElement('div');
wrap.className = 'e-loop-item course-ads-slot';
wrap.innerHTML = resp.data; // should contain .rxbri-courses-rectangle-placement
if (afterEl) {
afterEl.insertAdjacentElement('afterend', wrap);
} else {
container.appendChild(wrap);
}
purgeBurst(container);
if (typeof jQuery !== 'undefined') {
jQuery(document).trigger('advanced_ads_ready');
}
reflowGrid();
}
} catch(e) {}
}
injecting = false;
}
};
xhr.open('POST', ajaxurl, true);
xhr.send(data);
}
// Bind to FacetWP loaded (initial + every facet change)
if (typeof jQuery !== 'undefined') {
jQuery(document).off('facetwp-loaded.coursesAds').on('facetwp-loaded.coursesAds', injectAd);
} else if (window.FWP?.hooks?.addAction) {
if (!window.__coursesAdsBound) {
FWP.hooks.addAction('facetwp/loaded', injectAd);
window.__coursesAdsBound = true;
}
}
})();