PluginProbe
Yoast SEO – Advanced SEO with real-time guidance and built-in AI / 28.5
Yoast SEO – Advanced SEO with real-time guidance and built-in AI v28.5
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 28.5, at admin/class-option-tabs-formatter.php

94 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 * @return void
34 */
35 public function run( WPSEO_Option_Tabs $option_tabs ) {
36
37 echo '<h2 class="nav-tab-wrapper" id="wpseo-tabs">';
38 foreach ( $option_tabs->get_tabs() as $tab ) {
39 $label = esc_html( $tab->get_label() );
40
41 if ( $tab->is_beta() ) {
42 $label = '<span style="margin-right:4px;">' . $label . '</span>' . new Beta_Badge_Presenter( $tab->get_name() );
43 }
44 elseif ( $tab->is_premium() ) {
45 $label = '<span style="margin-right:4px;">' . $label . '</span>' . new Premium_Badge_Presenter( $tab->get_name() );
46 }
47
48 printf(
49 '<a class="nav-tab" id="%1$s" href="%2$s">%3$s</a>',
50 esc_attr( $tab->get_name() . '-tab' ),
51 esc_url( '#top#' . $tab->get_name() ),
52 // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- Reason: we do this on purpose
53 $label,
54 );
55 }
56 echo '</h2>';
57
58 foreach ( $option_tabs->get_tabs() as $tab ) {
59 $identifier = $tab->get_name();
60
61 $class = 'wpseotab ' . ( $tab->has_save_button() ? 'save' : 'nosave' );
62 printf( '<div id="%1$s" class="%2$s">', esc_attr( $identifier ), esc_attr( $class ) );
63
64 $tab_filter_name = sprintf( '%s_%s', $option_tabs->get_base(), $tab->get_name() );
65
66 /**
67 * Allows to override the content that is display on the specific option tab.
68 *
69 * @internal For internal Yoast SEO use only.
70 *
71 * @param string|null $tab_contents The content that should be displayed for this tab. Leave empty for default behaviour.
72 * @param WPSEO_Option_Tabs $option_tabs The registered option tabs.
73 * @param WPSEO_Option_Tab $tab The tab that is being displayed.
74 */
75 $option_tab_content = apply_filters( 'wpseo_option_tab-' . $tab_filter_name, null, $option_tabs, $tab );
76 if ( ! empty( $option_tab_content ) ) {
77 echo wp_kses_post( $option_tab_content );
78 }
79
80 if ( empty( $option_tab_content ) ) {
81 // Output the settings view for all tabs.
82 $tab_view = $this->get_tab_view( $option_tabs, $tab );
83
84 if ( is_file( $tab_view ) ) {
85 $yform = Yoast_Form::get_instance();
86 require $tab_view;
87 }
88 }
89
90 echo '</div>';
91 }
92 }
93 }
94