Erhalten Sie Post-Informationen innerhalb des modalen Fensters?

Was ich versuche zu tun

Ich habe einen benutzerdefinierten Beitragstyp für “Filme” eingerichtet und unten stelle ich die Vorlage ein. Im Grunde versuche ich, eine a.thickbox (im Code unten) zu erhalten, um ein modales Fenster mit mehr Informationen über den Film zu öffnen. Beachten Sie die Hinzufügung von &pid=ID; ?> &pid=ID; ?> am Ende des href .

  

Our Movies

    query('post_type=movies' . '&paged=' . $paged . '&posts_per_page=6'); while ( $wp_query->have_posts() ) : $wp_query->the_post(); $c++; $custom = get_post_custom($post->ID); $movie_info = $custom["movie_info"][0]; ?> <li id="movie-"> <a class="thickbox" href="https://wordpress.stackexchange.com/questions/81475/get-post-info-inside-modal-window//movies-modal?KeepThis=true&TB_iframe=true&height=820&width=610&pid=ID; ?>">View more info

Mein (fehlgeschlagener) Versuch

Ich habe versucht, eine separate Vorlage (unten) zu erstellen, eine Seite namens “Movies Modal” im Dashboard zu erstellen und die Vorlage der Seite zuzuordnen. Dann habe ich versucht, die POST ID aus dem a.thickbox Link von der Vorlage oben zu holen ( &pid=ID; ?> ), So dass nur die Informationen dieses Beitrags in der modalen Vorlage unten mit dieser Zeile a.thickbox werden : $wp_query->query( 'post_type=movies&p=' . $_GET['pid']);

   query( 'post_type=movies&p=' . $_GET['pid']); while ( $wp_query->have_posts() ) : $wp_query->the_post(); $c++; $custom = get_post_custom($post->ID); $movie_info = $custom["movie_info"][0]; $actor_bio = $custom["actor_bio"][0]; $actor_info = $custom["actor_info"][0]; ?> 

All dies war jedoch ein modales Fenster mit den Informationen für alle Beiträge und nicht nur die Informationen für die Post, in der der Link ist, wie folgt:

modales Fenster

Ich kann nicht herausfinden, wie ich die Informationen nur für den Post bekomme, auf den ich geklickt habe. Kann mir bitte jemand helfen oder mich in die richtige Richtung drängen?

Aktualisierung

 pid is not set\ngettype: NULLpid intval: 0Array ( [post] => post [page] => page [attachment] => attachment [revision] => revision [nav_menu_item] => nav_menu_item [product] => product [product_variation] => product_variation [shop_order] => shop_order [shop_coupon] => shop_coupon [wpcf7_contact_form] => wpcf7_contact_form [movies] => movies [psdtv] => psdtv ) WordPress version: 3.5 

Dieser Block wurde geändert:

 <li id="movie-"> <?php if (!empty($movie_info)) { echo 'Summary: '. $movie_info .''; } ?> <a class="thickbox" href="https://wordpress.stackexchange.com/questions/81475/get-post-info-inside-modal-window//movies-modal/?KeepThis=true&TB_iframe=true&height=820&width=610&pid=">View more info  

Solutions Collecting From Web of "Erhalten Sie Post-Informationen innerhalb des modalen Fensters?"

Es scheint, dass Ihre Verwendung von Thickbox der Schuldige ist. Beim Öffnen einer Thickbox über den Anker müssen die Thickbox-Parameter immer die letzte sein, sonst werden die anderen Parameter entfernt, zB Ihre Filme Post ID

http://devll.wordpress.com/2009/10/01/jquery-iframe-thickbox-removes-parameter/

Erstens ist die Verwendung von Abfragen inkorrekt, und außerdem sagen Sie Ihrer Abfrage nicht, in welchem ​​Post gesucht werden soll.

Stattdessen sollten Sie eine richtige Abfrage durchführen, zB:

 $movie_query = new WP_Query( array( 'post_type' => 'movies', 'p' => $_GET['pid'] )); if($movie_query->have_posts()){ while ( $movie_query->have_posts() ) { $movie_query->the_post(); $custom = get_post_custom($post->ID); $movie_info = $custom["movie_info"][0]; $actor_bio = $custom["actor_bio"][0]; $actor_info = $custom["actor_info"][0]; ?> 
< ?php if (!empty($movie_info)) { echo $movie_info ?> < ?php if (!empty($actor_bio)) { echo $actor_bio ?> < ?php if (!empty($actor_info)) { echo $actor_info ?>
< ?php } } wp_reset_postdata();

Bevor Sie fortfahren, müssen Sie wissen, wie Sie eine grundlegende Abfrage sauber durchführen und warum und wann Sie sie verwenden. Dafür gebe ich dir folgendes:

  • Ändern Sie die Hauptabfrage niemals direkt. (Die einzige Zeit, um es zu ändern ist, wenn es in einen pre_get_posts Filter übergeben wird)
  • Vermeiden Sie query_posts
  • Lesen Sie diese kurze Präsentation von Andrew Nacin: Sie kennen Query nicht , es wird Ihnen sagen, was Sie verwenden sollen, wie Sie es verwenden und warum. Es wird von vielen notwendigen Lesungen berücksichtigt.

bearbeiten:

Fügen Sie das folgende Snippet oberhalb meiner modifizierten Version Ihrer Abfrage ein:

 echo '
'; if(isset($_GET['pid'])){ echo 'pid is set\n'; } else { echo 'pid is not set\n'; } echo 'gettype: '. gettype($_GET['pid']); echo 'pid intval: '.intval($_GET['pid']); $post_types=get_post_types(); print_r($post_types); echo 'Wordpress version: '.get_bloginfo('version'); echo '

';

bearbeiten:

Dieser Code in Ihrer Hauptliste ist defekt:

  
  • < ?php if (!empty($movie_info)) { echo $movie_info ?> View more info
  • Sie haben nie eine schließende Klammer für die if-statement oder einen Semikolon hinzugefügt. Ich schlage vor, Sie haben auch echo $post->ID; mit the_ID(); und vergewissern Sie sich, dass tatsächlich die richtige ID gedruckt wird. Ich würde auch vorschlagen, ein '/' zwischen den? KeepThis und das KeepThis