Для начала я начинающий с 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');
Любая помощь будет отличной.
Задача ещё не решена.
Других решений пока нет …