我一直在尝试为我的Wordpress主题创建自己的短代码,让生活更轻松一些。不幸的是,我的代码遇到了问题。
下面,Javascript部分中的代码是我在functions.php文件中放置的内容,在HTML部分中,我在Wordpress中作为短代码放在我的页面上,但似乎没有出现?
1:JAVASCRIPT
2:HTML
function hire_equipment_func($atts) {
extract( shortcode_atts( array(
'img' => 'no-img',
'user' => 'no-user',
'text' => 'no-text',
), $atts ) );
if ( $atts['img'] == '' || $atts['user'] == '' || $atts['text'] == '' ) return;
$output =
'<div>
<div>' . $atts['img'] . '</div><br />
<div>' . $atts['user'] . '</div>
<div>' . $atts['text'] . '</div>
</div>';
return $output;
}
add_shortcode( 'hire_equipment', 'hire_equipment_func' );
[hire_equipment img="" user="Test Float" text="Can be used anywhere"]
对此问题的任何帮助都将非常感谢!!
亲切的问候, 杰西
答案 0 :(得分:1)
如果未设置其中一个属性,则不返回任何内容,否则将返回div
中的每个属性。
function hire_equipment_func($atts) {
$atts = array_change_key_case((array)$atts, CASE_LOWER);
if (!isset($atts['img']) || !isset($atts['user']) || !isset($atts['text'])) return;
$output =
'<div>
<div>' . $atts['img'] . '</div><br />
<div>' . $atts['user'] . '</div>
<div>' . $atts['text'] . '</div>
</div>';
return $output;
}
add_shortcode( 'hire_equipment', 'hire_equipment_func' );
答案 1 :(得分:0)
function hire_equipment_func($atts) {
extract( shortcode_atts( array(
'img' => 'no-img',
'user' => 'no-user',
'text' => 'no-text',
), $atts ) );
if ( $atts['img'] == 'no-img' || $atts['user'] == 'no-user' || $atts['text'] == 'no-text' ) return;
$output =
'<div>
<div>' . $atts['img'] . '</div><br />
<div>' . $atts['user'] . '</div>
<div>' . $atts['text'] . '</div>
</div>';
return $output;
}
add_shortcode( 'hire_equipment', 'hire_equipment_func' );
[hire_equipment img="" user="Test Float" text="Can be used anywhere"]
好的,出于某种原因,我将每个属性中的相同文本(例如,来自属性'img'的'no-img')放入IF语句中的每个文本区域,并且它有效!
所以我已经回答了我自己的问题!但是,我仍然有兴趣想知道为什么它的工作方式如此。一旦有人帮助我理解其背后的概念原因,我愿意将这个问题标记为答案。
谢谢! 杰西
答案 2 :(得分:0)
这将删除未指定的部分,因此如果您将此PHP片段放入functions.php文件中(最好在您的子主题中):
function hire_equipment_func( $atts ) {
extract(
shortcode_atts(
array(
'img' => 'no-img'
, 'user' => 'no-user'
, 'text' => 'no-text'
)
, $atts
)
);
$output = '<div>' . PHP_EOL;
if( isset( $atts[ 'img' ] ) ) { $output .= ' <div>' . $atts[ 'img' ] . '</div><br>' . PHP_EOL; }
if( isset( $atts[ 'user' ] ) ) { $output .= ' <div>' . $atts[ 'user' ] . '</div>' . PHP_EOL; }
if( isset( $atts[ 'text' ] ) ) { $output .= ' <div>' . $atts[ 'text' ] . '</div>' . PHP_EOL; }
$output .= '</div>';
return $output;
}
add_shortcode( 'hire_equipment', 'hire_equipment_func' );
并将此WordPress短代码放在您的页面上:
[hire_equipment img="" user="Test Float" text="Can be used anywhere"]
你会得到:
Test Float
Can be used anywhere
示例2:
[hire_equipment img="/file/path/image.svg" user="Test Float" text="Can be used anywhere"]
产量
/file/path/image.svg
Test Float
Can be used anywhere
示例3:
[hire_equipment img="/file/path/image.svg" text="Can be used anywhere"]
输出
/file/path/image.svg
Can be used anywhere
示例4:
[hire_equipment img="" user="" text=""]
显示
由标记中的换行符引起。
如果您想知道,PHP_EOL是一个PHP常量,表示正确的行结束&#39;您平台的符号。