Skt in voller Breite grundlegende Diashow-Problem

Hintergrund:

Ich mache eine Fotografie-Website und dachte, dass skt in voller Breite ein gutes Thema für die Zielseite ist. Es hat gut geklappt. Dann fing ich an, verrückt zu werden. Ich wollte, dass mein Client auswählen kann, ob sechs zufällige Bilder für die Titelseiten-Diashow ausgewählt werden können. Dies geschieht durch eine zusätzliche Option im Medieneditor, wo sie auswählen können, ob ein bestimmtes Bild Teil der Diashow sein soll.

Ich habe ihre Themenfunktionsdatei bearbeitet und theoretisch sollte der Code funktionieren, aber jetzt funktioniert der Code nicht mehr. Ich habe ihren ganzen Code behalten und nur der Datei hinzugefügt, und wenn ich eine Option im Customizer für die zufälligen Fotos oder die vorausgewählten Fotos auswähle, funktionieren beide nicht.

Frage:

Ist das ein Fix für den Code (siehe unten), damit die Diashow funktioniert?

Auch, da ich dieses Thema nur als meine Landing / Homepage verwenden möchte, sollte ich den Code für die Homepage in mein Website-Plug-in kopieren und dann ein anderes Thema auswählen?

Code:

<?php if (is_front_page() || is_home()) { if (get_theme_mod('rand_slide') == 'static') { for ($i = 1; $i < 6; $i++) { if (of_get_option('slide' . $i, true) != "") { $imgUrl = esc_url(of_get_option('slide' . $i, true)); $imgTitle = esc_html(of_get_option('slidetitle' . $i, true)); $imgDesc = esc_html(of_get_option('slidedesc' . $i, true)); $imgHref = esc_html(of_get_option('slideurl' . $i, true)); if ($imgUrl != '') { echo '{image : \'' . $imgUrl . '\', title : \'
' . ( ($imgHref != '' && $imgTitle != '') ? '' : '') . $imgTitle . ( ($imgHref != '' && $imgTitle != '') ? '' : '') . '
' . $imgDesc . '
' . ( ($imgHref != '') ? '' : '') . '\', thumb : \'' . $imgUrl . '\', url : \'\'},' . "\n"; } } } } elseif (get_theme_mod('rand_slide') == 'random') { $args = array( 'post_type' => 'attachment', 'meta_key' => 'on_front_page', 'meta_value' => '1', 'orderby' => 'rand', 'posts_per_page' => 6, 'max_num_pages' => 1, ); $slides = new WP_Query($args); if ($slides->have_posts()) { while ($slides->have_posts()) { $img = $slides->next_post(); $imgId = $img->ID; $imgTitle = $img->post_title; $imgHref = get_permalink($img); $imgDesc = $img->post_content; $imgData = wp_get_attachment_image_src($imgId, 'thumbnail'); $imgUrl = $imgData[0]; if ($imgUrl != '') { echo '{image : \'' . $imgUrl . '\', title : \'
' . ( ($imgHref != '' && $imgTitle != '') ? '' : '') . $imgTitle . ( ($imgHref != '' && $imgTitle != '') ? '' : '') . '
' . $imgDesc . '
' . ( ($imgHref != '') ? '' : '') . '\', thumb : \'' . $imgUrl . '\', url : \'\'},' . "\n"; } } } } }

Der ursprüngliche Code begann in Zeile 170 in der Themenfunktionsdatei.

Solutions Collecting From Web of "Skt in voller Breite grundlegende Diashow-Problem"

Probieren Sie es aus … es sollte Ihnen zumindest in die richtige Richtung weisen. Beachten Sie, dass es sehr schwer ist , eine gute Antwort zu geben, ohne zu wissen, was Ihre functionen / Optionen sind.

 < ?php try { $do_echo = true; if (is_front_page() || is_home()) { if ( $do_echo ) { echo "

Is front page or blog"; } $test = get_theme_mod('rand_slide'); if ( $do_echo ) { echo "

get theme mode: {$test}

"; } if (get_theme_mod('rand_slide') == 'static') { if ( $do_echo ) { echo "

Random slide is static

"; } for ($i = 1; $i < 6; $i++) { $test_two = of_get_option('slide' . $i, true); if ( $do_echo ) { echo "

of_get_option( slide{$i}, true ) is {$test_two}"; } if (of_get_option('slide' . $i, true) != "") { if ( $do_echo ) { echo "

In inner loop for {$i}

"; } $imgUrl = esc_url(of_get_option('slide' . $i, true)); if ( $do_echo ) { echo "

imgUrl is now {$imgUrl}

"; } $imgTitle = esc_html(of_get_option('slidetitle' . $i, true)); $imgDesc = esc_html(of_get_option('slidedesc' . $i, true)); $imgHref = esc_html(of_get_option('slideurl' . $i, true)); if ($imgUrl != '') { if ( $do_echo ) { echo "

Going to echo slide...

"; } $to_echo = '{image : \'' . $imgUrl . '\', title : \'
' . ( ($imgHref != '' && $imgTitle != '') ? '' : '') . $imgTitle . ( ($imgHref != '' && $imgTitle != '') ? '' : '') . '
' . $imgDesc . '
' . ( ($imgHref != '') ? '' : '') . '\', thumb : \'' . $imgUrl . '\', url : \'\'},' . "\n"; if ( $do_echo ) { echo "

Would now echo " . html_attributes($to_echo) . "

"; echo $to_echo; } else if ( $do_echo ) { echo "

imgUrl empty, not displaying slide

"; } } else if ( $do_echo ) { echo "

of_get_option returned empty string. not echoing slide.

"; } } } elseif (get_theme_mod('rand_slide') == 'random') { $args = array( 'post_type' => 'attachment', 'meta_key' => 'on_front_page', 'meta_value' => '1', 'orderby' => 'rand', 'posts_per_page' => 6, 'max_num_pages' => 1, ); $slides = new WP_Query($args); if ($slides->have_posts()) { while ($slides->have_posts()) { $img = $slides->next_post(); $imgId = $img->ID; $imgTitle = $img->post_title; $imgHref = get_permalink($img); $imgDesc = $img->post_content; $imgData = wp_get_attachment_image_src($imgId, 'thumbnail'); $imgUrl = $imgData[0]; if ($imgUrl != '') { echo '{image : \'' . $imgUrl . '\', title : \'
' . ( ($imgHref != '' && $imgTitle != '') ? '' : '') . $imgTitle . ( ($imgHref != '' && $imgTitle != '') ? '' : '') . '
' . $imgDesc . '
' . ( ($imgHref != '') ? '' : '') . '\', thumb : \'' . $imgUrl . '\', url : \'\'},' . "\n"; } } } } } } catch ( Exception $e ) { echo "

A fatal error has occurred...

" . print_r($e, true) . "

"; }

Ja, das ist hackisch … aber wenn Sie eine Menge Echo-Statements machen, sollten Sie genau sehen, wo das, was Sie erwarten, nicht passiert.

Und wie von Howdy angemerkt, stellen Sie sicher, dass Sie Ihre Debug-Flags aktivieren und auch auf diese Art nach Problemen suchen.

Wenn Sie nicht mindestens PHP 5 ausführen, entfernen Sie den umgebenden try / catch-Block.

Persönlich, wenn Sie Probleme mit Ihrem Code haben, würde ich Folgendes empfehlen:

  • Stellen Sie sicher, dass die verschiedenen WP_DEBUG-Flags auf True festgelegt sind.
  • Stellen Sie sicher, dass die Dinge so sind, wie Sie es erwarten. Machen Sie nicht nur Dinge, stellen Sie sicher, dass die Variablen wie erwartet sind … oder eine Ausnahme auslösen oder zumindest eine Benachrichtigung auf dem Server protokollieren.

In Ihrem Code beispielsweise:

 if ( $imgUrl != '' ) { # do stuff } 

Sie sollten wirklich darüber nachdenken

 if ( !empty( $imgUrl ) ) { # do stuff } else { # unexpected! Maybe throw and handle an exception, add to the server error log, etc. } 

Das wird Ihnen auf lange Sicht viele Kopfschmerzen ersparen.