<?php
// Die beiden folgenden Zeilen gehören in die functions.php des Themes oder dahin,
// wo Scripte für ein Plugin oder Widget eingebunden werden. "portfolio-page.js" ist
// das Script, von dem aus ich die Ajax-Aufrufe mache.
// Das ist der Wordpress-Weg, um Scripte in eine Seite einzubinden.
wp_enqueue_script('portfolio-page', get_template_directory_uri() . '/js/portfolio-page.js', array('jquery'), false, false);
// Das bedeutet: "Erlaube portfolio-page Zeug mit Ajax aufzurufen."
wp_localize_script('portfolio-page', 'ajaxAdmin', array( 'ajaxurl' => admin_url( 'admin-ajax.php' )));
// Diese beiden Zeilen gehören ebenfalls in die functions.php. Sie mappen den Ajax-Aufruf auf die
// entsprechende Php methode. Es ist wichtig, dass die parameter genau zueinander passen, wie hier
// "tnet_load_post_content" (ja, inklusive dem wp_ Zeugs).
add_action( 'wp_ajax_tnet_load_post_content', 'tnet_load_post_content' );
add_action( 'wp_ajax_nopriv_tnet_load_post_content', 'tnet_load_post_content' );
// Das hier ist die tatsächliche Methode, die dann vom Javascript aufgerufen wird.
function tnet_load_post_content()
{
$id = $_POST['pageId']; // So kommt man an Parameter, die vom Javascript mitgeschickt werden.
// Hier wird geschaut, ob es sich bei der Seite mit der Id 'pageId' um eine mit einem SiteOrigin Layout handelt.
$meta = get_post_meta( $id, 'panels_data', true );
if( class_exists( 'SiteOrigin_Panels' ) && $meta )
{
// Ja: Benutze SiteOrigin-Magie, um an das Seitenlayout zu kommen.
$renderer = SiteOrigin_Panels::renderer();
$content = $renderer->render( $id );
}
else
{
// Nein: Hol das Layout im standard Wordpress Weg
$content = apply_filters( 'the_content', get_page($id)->post_content );
}
// Gib das Layout zurück an den Aufrufer.
echo $content;
// Wordpress fügt ohne das hier eine "0" zu der Antwort hinzu.
die();
}
?>