PluginProbe
Yoast SEO – Advanced SEO with real-time guidance and built-in AI / 19.0
Yoast SEO – Advanced SEO with real-time guidance and built-in AI v19.0
28.5 28.4 28.3 28.2 28.1 28.0 27.9 27.8 27.7 27.6 27.5 trunk 18.0 18.1 18.2 18.3 18.4 18.4.1 18.5 18.5.1 18.6 18.7 18.8 18.9 19.0 All 129 releases
wordpress-seo / admin / class-option-tabs-formatter.php

class-option-tabs-formatter.php in Yoast SEO – Advanced SEO with real-time guidance and built-in AI 19.0, at admin/class-option-tabs-formatter.php

93 lines 2.8 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * WPSEO plugin file.
4 *
5 * @package WPSEO\Admin\Options\Tabs
6 */
7
8 use Yoast\WP\SEO\Presenters\Admin\Beta_Badge_Presenter;
9 use Yoast\WP\SEO\Presenters\Admin\Premium_Badge_Presenter;
10
11 /**
12 * Class WPSEO_Option_Tabs_Formatter.
13 */
14 class WPSEO_Option_Tabs_Formatter {
15
16 /**
17 * Retrieves the path to the view of the tab.
18 *
19 * @param WPSEO_Option_Tabs $option_tabs Option Tabs to get base from.
20 * @param WPSEO_Option_Tab $tab Tab to get name from.
21 *
22 * @return string
23 */
24 public function get_tab_view( WPSEO_Option_Tabs $option_tabs, WPSEO_Option_Tab $tab ) {
25 return WPSEO_PATH . 'admin/views/tabs/' . $option_tabs->get_base() . '/' . $tab->get_name() . '.php';
26 }
27
28 /**
29 * Outputs the option tabs.
30 *
31 * @param WPSEO_Option_Tabs $option_tabs Option Tabs to get tabs from.
32 */
33 public function run( WPSEO_Option_Tabs $option_tabs ) {
34
35 echo '<h2 class="nav-tab-wrapper" id="wpseo-tabs">';
36 foreach ( $option_tabs->get_tabs() as $tab ) {
37 $label = esc_html( $tab->get_label() );
38
39 if ( $tab->is_beta() ) {
40 $label = '<span style="margin-right:4px;">' . $label . '</span>' . new Beta_Badge_Presenter( $tab->get_name() );
41 }
42 elseif ( $tab->is_premium() ) {
43 $label = '<span style="margin-right:4px;">' . $label . '</span>' . new Premium_Badge_Presenter( $tab->get_name() );
44 }
45
46 printf(
47 '<a class="nav-tab" id="%1$s" href="%2$s">%3$s</a>',
48 esc_attr( $tab->get_name() . '-tab' ),
49 esc_url( '#top#' . $tab->get_name() ),
50 // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- Reason: we do this on purpose
51 $label
52 );
53 }
54 echo '</h2>';
55
56 foreach ( $option_tabs->get_tabs() as $tab ) {
57 $identifier = $tab->get_name();
58
59 $class = 'wpseotab ' . ( $tab->has_save_button() ? 'save' : 'nosave' );
60 printf( '<div id="%1$s" class="%2$s">', esc_attr( $identifier ), esc_attr( $class ) );
61
62 $tab_filter_name = sprintf( '%s_%s', $option_tabs->get_base(), $tab->get_name() );
63
64 /**
65 * Allows to override the content that is display on the specific option tab.
66 *
67 * @internal For internal Yoast SEO use only.
68 *
69 * @api string|null The content that should be displayed for this tab. Leave empty for default behaviour.
70 *
71 * @param WPSEO_Option_Tabs $option_tabs The registered option tabs.
72 * @param WPSEO_Option_Tab $tab The tab that is being displayed.
73 */
74 $option_tab_content = apply_filters( 'wpseo_option_tab-' . $tab_filter_name, null, $option_tabs, $tab );
75 if ( ! empty( $option_tab_content ) ) {
76 echo wp_kses_post( $option_tab_content );
77 }
78
79 if ( empty( $option_tab_content ) ) {
80 // Output the settings view for all tabs.
81 $tab_view = $this->get_tab_view( $option_tabs, $tab );
82
83 if ( is_file( $tab_view ) ) {
84 $yform = Yoast_Form::get_instance();
85 require $tab_view;
86 }
87 }
88
89 echo '</div>';
90 }
91 }
92 }
93