从短代码中提取属性并将其分配给id url anchor

时间:2014-11-12 22:29:55

标签: php wordpress plugins attributes shortcode

首先,我是PHP的初学者。我目前正在构建一个关于wordpress的网站并使用这个插件。

https://wordpress.org/plugins/fruitful-shortcodes/

此插件允许我轻松添加带有相应内容框的标签。在短代码中,我可以通过名为title的属性指定标签上的标题。默认情况下,当我单击任何选项卡时,url wilk会为该选项卡添加一个#标签。所以它从www.mywebsite.com/services到www.mywebsite.com/services#ffs-tabbed-856,每次都会随机生成最后的数字。

我想要做的是能够单击选项卡并让插件提取选项卡的标题并将其添加为主题标签。因此,如果我单击的标签名为 Foot Care ,则网址应从www.mywebsite.com/services更改为www.mywebsite.com/services#foot-care。我一直在挖掘插件php文件,并找到负责生成当前主题标签的行。

  

$ id ='ffs-tabbed-'。兰德(1,100);

由于缺乏PHP经验,我一直在尝试使用随机组合的php来尝试让它发挥作用。有一些变量,比如$ title和$ tab_title,但我不知道如何使用它们。我已经搜索了几个小时,甚至通过电子邮件发送了插件创建者。以下是我认为正在使用的特定短代码所使用的函数。

function fruitful_tabs_shortcode($atts, $content = null) {
    $output     = '';
    $tab_titles = array();
    $tabs_class = 'tab_titles';
    extract(shortcode_atts(array('id' => '', 'type' => '', 'width' => '', 'fit' => '', 'widthtab' => '', 'tabcolor' => '#71AFFF', 'closed' => 'true'), $atts, 'fruitful_tabs'));

    $id     = 'ffs-tabbed-' . rand( 1, 100 );
    $type   = 'default';
    $width  = 'auto';
    $fit    = 'false';
    $link   = '#';
    $widthtab   = '30%';

    if (isset($atts['id']))     { $id    = sanitize_html_class($atts['id']); }
    if (isset($atts['type']))   { $type  = esc_js($atts['type']); }
    if (isset($atts['width']))  { $width = esc_js($atts['width']); }
    if (isset($atts['fit']))    { $fit   = esc_js($atts['fit']); }
    if (isset($atts['widthtab']))   { $widthtab  = esc_js($atts['widthtab']); }
    if (isset($atts['tabcolor']))   { $tabcolor  = esc_html($atts['tabcolor']); }
    if (isset($atts['closed']))     { $closed    = esc_html($atts['closed']); }

    $output .= '<script type="text/javascript"> ';
        $output .= 'jQuery(document).ready(function() { ';
            $output .= 'jQuery("#'.$id.'").easyResponsiveTabs({ ';
            $output .= '    type:   "'.$type.'", ';
            $output .= '    width: "'.$width.'", ';
            $output .= '    fit:    '.$fit;
            $output .= '}); ';
            $output .= 'var cont_width = jQuery("#'.$id.'.resp-vtabs").outerWidth() - jQuery("#'.$id.'.resp-vtabs .resp-tabs-list").outerWidth() - 3;';
            $output .= 'jQuery("#'.$id.'.resp-vtabs .resp-tabs-container").css({"width":cont_width});';
        $output .= '}); ';
    $output .= '</script>';

    preg_match_all( '/tab title="([^\"]+)"/i', $content, $matches, PREG_OFFSET_CAPTURE );
    if ( isset( $matches[1] ) ) { $tabs = $matches[1]; } 

    $output .= '<div id="'.$id.'" class="ffs-tabbed-nav">';
        $output .= '<ul class="resp-tabs-list"';
            if ($type == 'vertical') { $output .= ' style="width:'.$widthtab.'"'; }
            if ($type == 'accordion') { 
                if ($closed == 'true') { 
                    $output .= ' data-closed="closed"'; 
                }
            }
        $output .= '>';

    if (count($tabs)) {
        foreach ($tabs as $tab) {
            $output .= '<li>' . esc_html($tab[0]) . '</li>';
        }
    }   
    $output .= '</ul>';

    $output .= '<div class="resp-tabs-container">';
            $output .= fruitful_sh_esc_content_pbr(do_shortcode($content));
        $output .= '</div>';
    $output .= '</div>';
    $output .= '<div class="clearfix"></div>';
    return $output;
}
add_shortcode('fruitful_tabs', 'fruitful_tabs_shortcode');

任何帮助都会很棒。

0 个答案:

没有答案