Извлечь атрибут из шорткода и присвоить его идентификатору URL привязки

Для начала я начинающий с PHP. В настоящее время я создаю сайт на WordPress и использую этот плагин.

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

Этот плагин позволяет мне легко добавлять вкладки с соответствующими окнами контента. В шорткоде я могу указать заголовок, который отображается на вкладке через атрибут title. По умолчанию, когда я нажимаю на любую вкладку, URL добавляет хэштег для этой вкладки. Таким образом, он переходит от www.mywebsite.com/services к чему-то наподобие www.mywebsite.com/services#ffs-tabbed-856, причем число в конце генерируется случайным образом каждый раз.

Что я хочу сделать, так это иметь возможность щелкнуть вкладку и заставить плагин извлечь заголовок вкладки и добавить его в качестве хэштега. Так что, если вкладка, которую я нажимаю, называется Уход за ногами, URL-адрес должен измениться с 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

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector