2014-10-28 108 views
0

我正在使用wordpress插件。在插件中,用戶首先添加一個滑塊,然後添加相關滑塊的圖像。從php函數問題傳遞參數

首先我用shortcode做到這一點。用戶在短代碼中輸入滑塊的短名稱,並輸入相關滑塊的圖像幻燈片,如[foo_slider slider=slider_one][foo_slider slider=slider_two]

現在我「也」想要該片段,該用戶可以在代碼中添加代碼片段,例如echo wp_foo_slider(slider_two)。但我沒有明白。

請指導我,我該怎麼做。

這是我的代碼爲簡碼的工作原理:

<?php 
function wp_foo_sliders($atts) { 
    global $wpdb; 
    $tbl_sliders = $wpdb->prefix . "foo_sliders"; 

    ob_start(); 
    extract(shortcode_atts(array(
     'slider' => '', 
        ), $atts)); 

    $get_sliders = $wpdb->get_results("Select * From $tbl_sliders Where slider_shortname = '$slider'"); 
?> 
    <div class="foo_main_slider"> 
    <?php 
     foreach ($get_sliders as $get_slider) { 
      $slider_id = $get_slider->slider_id; 
    ?> 
    <div class="foo_slider_img"> 
    <?php 
     $get_slider_image = $wpdb->get_results("Select * From ".$wpdb->prefix."foo_images Where 

slider_id = $slider_id Order By image_order ASC"); 

     foreach ($get_slider_image as $foo_img) { 
    ?> 
     <img src="<?php echo $foo_img->image_path . $foo_img->image_name; ?>" alt=""> 
    <?php 
     } 
     } 
     return ob_get_clean(); 
} 

add_shortcode("foo_slider", "wp_foo_sliders"); 
?> 

我也試試這個由我自己<?php echo wp_foo_sliders("slider_two") ?><?php echo wp_foo_sliders(slider_two) ?>,在代碼中,當我刷新瀏覽器只<div class="foo_main_slider"> </div>出現無圖像顯示。

編輯:我想用戶可以使用短代碼<?php echo do_shortcode('[foo_slider slider=slider_one]'); ?>或用戶可以使用片斷<?php echo wp_foo_sliders("slider_two") ?>,只有簡碼工作,內容片段無法正常工作。

我犯了什麼錯誤,請幫助我。

+0

你想手動使用短代碼在你的PHP文件。是這樣嗎? – 2014-10-28 06:16:55

+0

編輯我的問題@Rohil_PHPBeginner – deemi 2014-10-28 06:24:06

+0

你的簡碼的名字叫做'foo_slider',不'wp_foo_sliders' – 2014-10-28 06:39:58

回答

0

所以我用我自己的讓我的解決方案。

我提出一個新的功能是:

<?php 
function foo_sliders($foo_short_name) { 
    global $wpdb; 
    $tbl_sliders = $wpdb->prefix . "foo_sliders"; 

    $get_sliders = $wpdb->get_results("Select * From $tbl_sliders Where slider_shortname = '$slider'"); 
?> 
    <div class="foo_main_slider"> 
    <?php 
     foreach ($get_sliders as $get_slider) { 
      $slider_id = $get_slider->slider_id; 
    ?> 
    <div class="foo_slider_img"> 
    <?php 
     $get_slider_image = $wpdb->get_results("Select * From ".$wpdb->prefix."foo_images Where 

slider_id = $slider_id Order By image_order ASC"); 

     foreach ($get_slider_image as $foo_img) { 
    ?> 
     <img src="<?php echo $foo_img->image_path . $foo_img->image_name; ?>" alt=""> 
    <?php 
     } 
     } 
    ob_start(); 
    return $foo_short_name; 
    return ob_get_clean(); 
} 

?> 

而在主題代碼:

<?php foo_sliders(short_name) ?> 

及其工作大

1

當你直接調用shortcode函數時,你傳遞一個字符串給它。當您使用簡碼方式時,WordPress會將參數轉換爲關聯數組。

嘗試重構你的代碼

if(is_array($atts)) { 
    //Called using shortcode so $atts is an array 
    extract(shortcode_atts(array(
     'slider' => '', 
        ), $atts)); 

} else { 
    //Function called directly so $atts is a string 
    $slider = $atts; 
}