Cargar contenido de página con AJAX usando Fancybox en WordPress
Puedo encontrar muchos tutoriales sobre cómo cargar páginas dinámicamente en WordPress e incluso contenidos de páginas, como estos:
cómo-cargar-solo-el-contenido-de-un-post-de-wordpress-usando-ajax
y
¿Mejor forma de cargar contenido de página en un popup Fancybox?
Pero no me llevan exactamente a donde quiero llegar.
El principal problema al que me enfrento es que quiero abrir la página dentro de Fancybox mediante Ajax, pero también quiero que esa página sea accesible a través de su URL normal, en caso de que quiera enviar a un usuario directamente a esa página. Entiendo que podría duplicar cada página (una usando una plantilla simplificada para Fancybox, la otra para el sitio real), pero eso parece una pesadilla de mantenimiento a largo plazo.
En resumen; quiero usar AJAX para recuperar y cargar solo el contenido de una publicación y mostrarlo usando Fancybox.
¿Alguna ayuda chicos? :)

Aquí está. Google no usa JS y no hay nada sofisticado. También los enlaces pueden usarse sin get, simplemente con una URL básica: pagina.com/nombre-del-post/
En una página individual:
<?php
$apost = $_GET["type"];
preg_replace('/_/', 'html', preg_replace('/%/', 'html', htmlentities(mysql_real_escape_string($apost))));
?>
<?php if($apost == 'iframe') { ?>
<?php get_header('single'); ?>
<?php if (have_posts()) : while (have_posts()) : the_post();?>
<div class="popup people">
personal del popup
</div>
<?php endwhile; endif; ?>
</body>
</html>
<?php } else { ?>
<?php get_header(); ?>
<div class="single">
<?php if (have_posts()) : while (have_posts()) : the_post();?>
contenido principal
<?php endwhile; endif; ?>
</div>
<?php get_footer(); ?>
<?php } ?>
En un botón HTML o enlace, etc:
<a href="<?php the_permalink();?>#<?php the_ID(); ?>" data-fancybox-type="iframe" class="various" id="<?php the_ID(); ?>" data-class="<?php echo get_post_type( get_the_ID() ); ?>">Ver elemento</a>
En JavaScript:
$(".results .results_item a").each(function(){
var hrefParts = $(this).attr('href').split('#');
$(this).attr('href', hrefParts[0] + '?type=iframe#' + hrefParts[1]);
});
$("a").fancybox({
maxWidth : 615,
maxHeight : 2000,
fitToView : true,
width : '100%',
height : '100%',
autoSize : false,
closeClick : false,
openEffect : 'none',
closeEffect : 'none',
wrapCSS : 'people' // añade un selector de clase al envoltorio de fancybox
});
$("a").click(function(event) {
window.location.hash = this.hash;
});
if(window.location.hash) {
var hash = window.location.hash.substring(1); //Almacena el hash en una variable y elimina el carácter #
var new_class_name = $("#" + hash).data("class");
$("#" + hash).fancybox({
maxWidth : 615,
maxHeight : 2000,
fitToView : true,
width : '100%',
height : '100%',
autoSize : false,
closeClick : false,
openEffect : 'none',
closeEffect : 'none',
wrapCSS : new_class_name // añade un selector de clase al envoltorio de fancybox
}).trigger('click');
// hash encontrado
} else {
// No se encontró hash
}
