动态生成的div的增量id

时间:2017-05-12 09:21:20

标签: php wordpress

我想动态生成具有唯一ID的视频播放器容器div。这些元素是通过WordPress中的Visual Composer生成的,最终 html 应该看起来像

<div style="width: 100%; display: inline-block; position: relative;">
<div style="margin-top: '. $custom_margin .'"></div>
<div id="player_1" style="position:absolute;top:0;left:0;right:0;bottom:0"></div>
    </div> 
<div style="width: 100%; display: inline-block; position: relative;">
<div style="margin-top: '. $custom_margin .'"></div>
<div id="player_2" style="position:absolute;top:0;left:0;right:0;bottom:0"></div>
    </div>
<div style="width: 100%; display: inline-block; position: relative;">
<div style="margin-top: '. $custom_margin .'"></div>
<div id="player_3" style="position:absolute;top:0;left:0;right:0;bottom:0"></div>
</div>

用户应该能够根据自己的喜好添加具有唯一ID的div元素。这就是我的php现在的样子: 编辑:为每个视频容器调用该函数

public function vc_custvideo_html($atts){

        extract(
            shortcode_atts(
                array(
                    'custom_width' => '',
                    'custom_height' => '',
                    ),
                    $atts
                )
            );
        $percent = $custom_height / $custom_width;
        $custom_margin = number_format( $percent * 100, 2 ) . '%';
        $html = '';
        $html.= '<div style="width: 100%; display: inline-block; position: relative;">';
        $html.= '<div style="margin-top: '. $custom_margin .'"></div>';
        $html.= '<div id="player_"  style="position:absolute;top:0;left:0;right:0;bottom:0"></div>';
        $html.= '</div>';
        return $html;
    }

我可以理解我必须使用foreach循环来生成唯一的ID,但我在php中真的很新,我需要帮助。

2 个答案:

答案 0 :(得分:0)

像这样的东西

$i = 0;
foreach ($playerInstance as $k => $currPlayer {
   vc_custvideo_html($currPlayer, $i)
   $i++;
}
public function vc_custvideo_html($atts, $index){

    extract(
        shortcode_atts(
            array(
                'custom_width' => '',
                'custom_height' => '',
                ),
                $atts
            )
        );
    $percent = $custom_height / $custom_width;
    $custom_margin = number_format( $percent * 100, 2 ) . '%';
    $html = '';
    $html.= '<div style="width: 100%; display: inline-block; position: relative;">';
    $html.= '<div style="margin-top: '. $custom_margin .'"></div>';
    $html.= '<div id="player_'.$index.'"  style="position:absolute;top:0;left:0;right:0;bottom:0"></div>';
    $html.= '</div>';
    return $html;
}

或者使用for循环

答案 1 :(得分:0)

假设每个视频调用一次该函数,请使用外部foreach和一个计数器:

$counter=1;
foreach($arrayOfVideos as $video){
  $this->vc_custvideo_html($video, $counter);
  $counter++;
}

在你的函数中,只需使用$counter变量:

// [...]
$html.= '<div style="margin-top: '. $custom_margin .'"></div>';
$html.= '<div id="player_"' . $counter . ' style="position:absolute;top:0;left:0;right:0;bottom:0"></div>';
$html.= '</div>';