name = $name; foreach ( $tabs as $tab ) { $this->add_tab( $tab ); } $this->link_content = $link_content; $this->link_title = isset( $options['link_title'] ) ? $options['link_title'] : ''; } /** * Outputs the section link if any tab has been added. */ public function display_link() { if ( $this->has_tabs() ) { printf( '
  • %3$s
  • ', esc_attr( $this->name ), ( '' !== $this->link_title ) ? ' title="' . esc_attr( $this->link_title ) . '"' : '', $this->link_content ); } } /** * Outputs the section content if any tab has been added. */ public function display_content() { if ( $this->has_tabs() ) { $html = '
    '; $html .= '
    '; $html .= '%3$s'; $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; } }