从php函数传递参数问题
我正在开发wordpress插件。在插件中,用户首先添加一个滑块,然后添加相关滑块的图像 首先,我用shortcode做这个。用户在短代码中输入滑块的短名称,并对相关滑块的幻灯片进行图像处理,如下所示从php函数传递参数问题,php,wordpress,Php,Wordpress,我正在开发wordpress插件。在插件中,用户首先添加一个滑块,然后添加相关滑块的图像 首先,我用shortcode做这个。用户在短代码中输入滑块的短名称,并对相关滑块的幻灯片进行图像处理,如下所示[foo\u slider slider=slider\u one]或[foo\u slider slider=slider\u two] 现在我“还”想要这个代码段,用户可以像这样在代码中添加snippetelse短代码echo wp\u foo\u slider(slider\u two)。但我
[foo\u slider slider=slider\u one]
或[foo\u slider slider=slider\u two]
现在我“还”想要这个代码段,用户可以像这样在代码中添加snippetelse短代码echo wp\u foo\u slider(slider\u 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");
?>
当您直接调用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;
}
所以我自己得到了解决方案
我为此创建了一个新函数:
<?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文件中手动使用该短代码。是这样吗?我编辑了我的问题@Rohil_phpBeginnery你的短代码叫做foo_slider
,而不是wp___sliders
wp___sliders()是我调用幻灯片图像的函数名,但是这个函数是通过短代码修改的。你有没有在codex中查看过Shortcode API?如何使用Shortcode?如何使用属性来修改Shortcode返回的内容
<?php foo_sliders(short_name) ?>