donljt2606 2014-10-28 06:12
浏览 52
已采纳

从php函数问题传递参数

I am working on a wordpress plugin. In plugin, a user first add a slider and then add images of relevant slider.

First i make this with shortcode. User enter the short name of the slider in the shortcode and images slides of relevant slider like this [foo_slider slider=slider_one] or [foo_slider slider=slider_two].

Now i "also" want the snippet, that user can add snippet else shortcode in the code like this echo wp_foo_slider(slider_two). But i dont get that.

Please guide me, how can i do this.

Here is my Code That works for shortcode:

<?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");
?>

I also try this by my own <?php echo wp_foo_sliders("slider_two") ?> or <?php echo wp_foo_sliders(slider_two) ?>, in code and when i refresh the browser only <div class="foo_main_slider"> </div> appears and no images show.

Edit: I want that user can use short code <?php echo do_shortcode('[foo_slider slider=slider_one]'); ?> or user can use snippet <?php echo wp_foo_sliders("slider_two") ?>, only shortcode is working, snippet not work.

What i make mistake please help me.

  • 写回答

2条回答 默认 最新

  • doumengxue7371 2014-10-28 09:40
    关注

    So i get my solution by my own.

    I make a new function for this:

    <?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();
    }
    
    ?>
    

    And in theme code:

    <?php foo_sliders(short_name) ?>
    

    and its work great

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置