2013-04-11 62 views
0

我運行一個WordPress網站,我已經安裝了它的主題調用特定的滑塊,它帶有其顯示在主頁的nivoSlider。現在,我可以通過登錄WP儀表板並導航到主題選項面板來選擇要在主頁上顯示的滑塊。從那裏,我可以從下拉列表中選擇要在主頁上顯示哪個滑塊(隨着我創建更多滑塊,列表不斷填充)。下面是其回聲一節「滑塊」在主題選項面板中的代碼:直接從代碼

//------------------------------------------------------------------------------ 
// SLIDER 
//------------------------------------------------------------------------------ 

     $options[] = array("name" => __('SLIDER','gxg_textdomain'), 
               "type" => "heading", 
               "img" => "/includes/admin/images/s.png"); 

     $options[] = array("name" => __('Set up your slider','gxg_textdomain'), 
     "type" => "info"); 


     $options[] = array("name" => __('Show Slider on Homepage','gxg_textdomain'), 
               "id" => $shortname."_slider", 
               "std" => "1", 
               "type" => "checkbox"); 


     $options[] = array("name" => __('Select a Slider','gxg_textdomain'), 
               "desc" => __('After you have created a slider, you can select it here.','gxg_textdomain'), 
               "id" => $shortname."_sliderimages", 
               "type" => "select", 
               "options" => $options_slides); 

這是Echo的主頁上的滑塊header.php文件中的代碼:

<?php get_template_part('slider'); ?> 

現在,如果我將上面的代碼放在任何模板文件中以顯示該特定模板上的滑塊,則顯示的唯一滑塊是從主題選項面板中選擇的滑塊。下面是這是slider.php文件中的代碼:

<div id="slider" class="nivoSlider"> 



     <?php 

       if (of_get_option('gg_slider') && of_get_option('gg_sliderimages')) { 



         global $wpdb, $post; 



         $slider = of_get_option('gg_sliderimages'); 

         $meta = get_post_meta($slider, 'gxg_slider_images', false); 



         if (!is_array($meta)) 

           $meta = (array) $meta; 



         if (!empty($meta)) { 

           $meta = implode(',', $meta); 



           $images = $wpdb->get_col(" 

             SELECT ID FROM $wpdb->posts 

             WHERE post_type = 'attachment' 

             AND ID IN ($meta) 

             ORDER BY menu_order ASC 

            "); 



           foreach ($images as $att) { 

             // Get image's source 

             $src = wp_get_attachment_image_src($att, 'full'); 

             $src = $src[0]; 



             $caption = get_post_meta($att , '_slidercaption', true); 

             $caption = htmlspecialchars($caption, ENT_QUOTES); 



             $cf = get_post_meta($att , '_sliderurl', true); 



             // Show image 

             if ($cf) {  

             echo "<a href='$cf'><img src='{$src}' alt='' title='$caption' /></a>"; 

             } else {  

             echo "<img src='{$src}' alt='' title='$caption' />"; 

             } 



           } 

         }   

       }   

     ?> 

</div><!-- .slider--> 

我基本上想要做的是,我要修改的文件slider.php以這樣的方式,我可以直接輸入任一的ID滑塊或滑塊的蛞蝓(該slider.php文件中),因此,它的回顯出來,無論哪個滑塊我在主題選項面板中所選擇的。據我瞭解,這可能是這是基於我在主題選項面板中選擇選擇滑塊代碼:

$slider = of_get_option('gg_sliderimages'); 

而不是「of_get_option('gg_sliderimages')」在上面的代碼,我想知道是否有什麼辦法,我可以輸入我想要顯示的滑塊的ID/slug。

期待的解決方案。謝謝。

回答

0

如果我理解正確的,你想代碼的第二部分複製到一個自定義視圖(例如single.php中)和回聲自定義信息的自定義滑塊,你會很難類型?

好了,你複製的代碼後,你應該刪除第一個條件,其預計從模板選項的參數,因爲你已經想通了。不管你在菜單中選擇了什麼,它總是會顯示滑塊。

其次,註釋掉這行代碼:

$slider = of_get_option('gg_sliderimages'); 

你要做到這一點,因爲$滑塊變量包含了由自定義主題功能of_get_option轉發後一組ID()。 之後,你需要定義自己的陣列,就像你想要的,自定義信息的數組。 例子:

$slider[] = array('123', '256', '455'); 

另外,請記住,重新定義了全局變量可以進一步細分你的代碼例如,如果你的single.php文件被query_posts期待先前定義$後();在這種情況下,您應該在foreach循環後重置查詢。