Wordpress Shortcode不显示结果

时间:2017-07-23 04:23:23

标签: php wordpress shortcode

我一直在尝试为我的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"]

对此问题的任何帮助都将非常感谢!!

亲切的问候, 杰西

3 个答案:

答案 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;您平台的符号。