'',
'link_class' => '',
'link_aria_label' => '',
);
$options = array_merge( $default_options, $options );
$this->name = $name;
foreach ( $tabs as $tab ) {
$this->add_tab( $tab );
}
$this->link_content = $link_content;
$this->link_title = $options['link_title'];
$this->link_class = $options['link_class'];
$this->link_aria_label = $options['link_aria_label'];
}
/**
* Outputs the section link if any tab has been added.
*/
public function display_link() {
if ( $this->has_tabs() ) {
printf(
'
%5$s',
esc_attr( $this->name ),
esc_attr( $this->link_class ),
( '' !== $this->link_title ) ? ' title="' . esc_attr( $this->link_title ) . '"' : '',
( '' !== $this->link_aria_label ) ? ' aria-label="' . esc_attr( $this->link_aria_label ) . '"' : '',
$this->link_content
);
}
}
/**
* Outputs the section content if any tab has been added.
*/
public function display_content() {
if ( $this->has_tabs() ) {
$html = '';
printf( $html, esc_attr( $this->name ), $this->tab_links(), $this->tab_content() );
}
}
/**
* Add a `WPSEO_Metabox_Tab` object to the tabs.
*
* @param WPSEO_Metabox_Tab $tab Tab to add.
*/
public function add_tab( WPSEO_Metabox_Tab $tab ) {
$this->tabs[] = $tab;
}
/**
* Checks if any tabs have been added to the section.
*
* @return bool
*/
protected function has_tabs() {
return ! empty( $this->tabs );
}
/**
* Concatenates all tabs' links into one html string.
*
* @return string
*/
private function tab_links() {
$links = '';
foreach ( $this->tabs as $tab ) {
$links .= $tab->link();
}
return $links;
}
/**
* Concatenates all tabs' content into one html string.
*
* @return string
*/
private function tab_content() {
$content = '';
foreach ( $this->tabs as $tab ) {
$content .= $tab->content();
}
return $content;
}
}