O& U@*(& Ut)& U`@0R;& U@HpF_& UPtT& U`BF_& UPpte& U <\& UpL Xpd& U`<1/& U` -X& Uph=K& UPud& U<*I& U+t)& U`ppR;& U`pN& U`pd& U<n& UP2F_& U `te& U<*& U1=& U@.+& U4*I& U`+]6& Uqe& U<-X& U=^& UPA^& Up`Ad& U<(& Upx U\& U^pF_& UPtd& U<(& Upx U+& Up>%& U>[@E`0@@P@0@Z@Z@`0@0@@@`0@"@"@8.@S@X}@X}@8F@8F@@_@_@Ht@Ht@X6@ؒ@ȡ@@@@@@@[^4*I& U+4*& U``Q(& UP`& UP |]6& U0~qd& U~<1/& U`~*& U`a/& Up]6& UqK& UpPud& U<1/& U(& U}E& U`+(& UP(& U@-X& U0(=^& U PA^& U`Ad& U`<1/& U` -X& U`0=*& U:& U<& UI& UPAL& U(& U x U(& Ux UO& U*t)& UP8R;& UPpF_& UPtF_& U`te& U<(& U`-X& UP`=^& U@PA^& U0`Ad& U<1/& U\& UQe hpT& UPBT& U`Bl(& U0GR& U0ptd& U@<6& U@>%& U0>[@y@y@Pk@Pk@ӧ@y@y@P@P@J U`Hؒ@A@@@x@P@ @X@S@X}@X}@B@ؒ@PB@@-calendar' ), new Element_Classes( 'tec-settings-form__section-header' ) ) ); $title_block->add_child( ( new Paragraph( new Element_Classes( 'tec-settings-form__section-description' ) ) )->add_children( [ new Plain_Text( esc_html__( 'Manage SEO and URL handling settings to prevent duplicate-content crawl problems.', 'the-events-calendar' ) ), ] ) ); $header = [ 'tec-events-seo-settings-header' => $title_block, ]; $fields = [ 'tec-events-seo-settings-section-header' => ( new Div( new Element_Classes( [ 'tec-settings-form__header-block' ] ) ) )->add_children( [ new H3( _x( 'URL & Crawl Protection', 'SEO settings sub-section header', 'the-events-calendar' ), new Element_Classes( [ 'tec-settings-form__section-header' ] ) ), new Plain_Text( esc_html__( 'Control how The Events Calendar handles URL parameters and robots directives to reduce duplicate-content crawl problems.', 'the-events-calendar' ) ), ] ), self::OPT_OUT_OF_RANGE_BEHAVIOR => [ 'type' => 'radio', 'label' => esc_html__( 'Out-of-range date URL behavior', 'the-events-calendar' ), 'tooltip' => esc_html__( 'What to do when a visitor or search engine requests an event listing page with a date that falls before the earliest event or after the latest event on record.', 'the-events-calendar' ), 'default' => 'hard_404', 'validation_type' => 'options', 'options' => [ 'hard_404' => esc_html__( 'Return HTTP 404 Not Found — recommended for SEO, prevents these URLs from being indexed.', 'the-events-calendar' ), 'soft_noindex' => esc_html__( 'Return HTTP 200 with a noindex directive — softer behaviour, the events page is still shown to visitors.', 'the-events-calendar' ), ], ], self::OPT_NOINDEX_DATED_LIST_URLS => [ 'type' => 'checkbox_bool', 'label' => esc_html__( 'Add noindex to dated List view URLs', 'the-events-calendar' ), 'tooltip' => esc_html__( 'Adds a noindex robots directive to any List view URL that carries a ?tribe-bar-date query parameter. The canonical tag already points to the base /events/list/ URL, so these parameterised URLs produce duplicate content. Disable if you intentionally expose dated list views as standalone pages.', 'the-events-calendar' ), 'default' => true, 'validation_type' => 'boolean', ], self::OPT_DISABLED_VIEW_404 => [ 'type' => 'checkbox_bool', 'label' => esc_html__( 'Return 404 for disabled view URLs', 'the-events-calendar' ), 'tooltip' => esc_html__( 'Returns HTTP 404 when a URL specifies a view (e.g. ?eventDisplay=photo) that is currently disabled under Events > Settings > Display. This prevents accumulation of disabled-view URLs in search indexes.', 'the-events-calendar' ), 'default' => true, 'validation_type' => 'boolean', ], ]; $fields = tribe( 'settings' )->wrap_section_content( 'tec-events-settings-seo', $fields ); return array_merge( $header, $fields ); } }