2010-10-09 93 views
0

當前正在生成一個允許多個圖像滑塊的Wordpress插件。目前,爲了確保代碼有效,我不得不將每個滑塊動態樣式加載到標籤中。這很好,但是它加載了所有滑塊的樣式,如果用戶使用多個圖像滑塊,真的可以開始向頁面源添加大量代碼。foreach循環幫助PHP

所以我試圖讓樣式只添加到標籤,如果滑塊實際上顯示在頁面上。這可能嗎?這是我目前如何顯示造型:

function test() { 
global $wpdb; 
$table_name = $wpdb->prefix . "premiumslider"; 
$number = $wpdb->get_results("SELECT * FROM $table_name"); 
foreach ($number as $slider) { ?> 
<style type="text/css"><?php if($slider->paginationstyle == 'icons') { ?> 
#lofslidecontent<?php echo $slider->id; ?> .lof-navigator li{<?php if($slider-  >paginationstyle=='icons'){ ?>background: url(<?php if($slider->paginationoff=='') echo WP_PLUGIN_URL.'/premium-slider/images/pagination.png'; if($slider->paginationoff!='') echo $slider->paginationoff; ?>) 0 0 no-repeat;<?php } ?>} 
#lofslidecontent<?php echo $slider->id; ?> .lof-navigator li.active{<?php if($slider->paginationstyle=='icons'){ ?>background: url(<?php if($slider->paginationon=='') echo WP_PLUGIN_URL.'/premium-slider/images/pagination_current.png'; if($slider->paginationon!='') echo $slider->paginationon; ?>) 0 0 no-repeat;<?php } ?>} 
<?php } ?> 
<?php if($slider->paginationstyle == 'images') { ?> 
#lofslidecontent<?php echo $slider->id; ?> .lof-navigator { margin-top: 50px; } 
#lofslidecontent<?php echo $slider->id; ?> .lof-navigator li img { border: <?php echo $slider->imgborder; ?>px solid #<?php echo $slider->imgcolour; ?>; } 
#lofslidecontent<?php echo $slider->id; ?> .lof-navigator li.active img { border: <?php echo $slider->imgborder; ?>px solid #<?php echo $slider->imghover; ?>; } 
#lofslidecontent<?php echo $slider->id; ?> .lof-navigator li.active img:hover { border: <?php echo $slider->imgborder; ?>px solid #<?php echo $slider->imghover; ?>; } 
    <?php } ?></style><?php 
} 
} 

我該如何做到這一點?

要顯示上面的代碼使用:

add_action('wp_head','test'); 

並顯示該滑塊($ ID爲那個特定的滑塊的id; 1,2,3等):

premium_slider($id); 

回答

0

這是一個複雜的問題。首先,我蔑視你使用全局變量,尤其是數據庫資源。我也不清楚爲什麼你需要以這種方式直接回應樣式。

我們幫助您:

要真正解決這個問題,我可以看到的唯一方法是,如果你把所有的存儲在某個地方的風格,如DB,一個配置文件,或者每款式任何這樣的事情。你必須事先知道樣式,因爲你在這裏很難編碼。因此,只需循環,如果滑塊的ID與其樣式相匹配,則打印樣式。如果您將所有樣式存儲在另一個使用滑塊ID散列的php文件中的大數組中,這將很簡單。

+1

您看到的全局$ wpdb實際上旨在被Wordpress用作全局。 – neopickaze 2010-10-09 07:21:29

+0

它可以作爲參數傳遞給函數。 Wordpress是設計之王嗎? – 2010-10-09 07:27:18

+0

訪問數據庫需要全局變量,因此,如果您不添加,爲什麼這些都不起作用;全球$ wpdb。你怎麼能通過ID循環找到一個匹配?我無法弄清楚自己,因爲你無法將參數傳遞給函數test();因爲add_action('wp_head','test');不允許他們 - 或者我可以相信;也許你可以但我不知道怎麼樣。 – 2010-10-09 09:28:19

0

你如何確定哪些滑塊出現在頁面上?實際上,您需要將查詢更改爲實際加載滑塊的查詢,這樣纔會加載CSS以顯示相同的滑塊。

$table_name = $wpdb->prefix . "premiumslider"; 
$number = $wpdb->get_results("SELECT * FROM $table_name WHERE category = 'cars'"); 

這隻會將元素加載到顯示在該特定頁面上的foreach數組中。

+0

category ='cars'的意義是什麼? – 2010-10-09 09:44:30