extract_faqs( $question_class, $answer_class ); if ( empty( $faqs ) ) { return array(); } $entities = array(); foreach ( $faqs as $faq ) { $question_text = isset( $faq['question'] ) ? wp_strip_all_tags( $faq['question'] ) : ''; $answer_text = isset( $faq['answer'] ) ? wp_kses_post( $faq['answer'] ) : ''; if ( '' === $question_text || '' === $answer_text ) { continue; } $entities[] = array( '@type' => 'Question', 'name' => $question_text, 'acceptedAnswer' => array( '@type' => 'Answer', 'text' => $answer_text, ), ); } if ( empty( $entities ) ) { return array(); } $schema = array( '@type' => 'FAQPage', '@id' => $context['url'] . '#faq', 'url' => $context['url'], 'name' => $context['title'], 'mainEntity' => $entities, 'mainEntityOfPage' => array( '@id' => $webpage_id, ), ); if ( $language_value ) { $schema['inLanguage'] = $language_value; } return $schema; } private static function get_context_override( array $options, array $context ) { $global_breadcrumbs = true; if ( array_key_exists( 'avc_ais_breadcrumbs_schema_enabled', $options ) ) { $global_breadcrumbs = (bool) $options['avc_ais_breadcrumbs_schema_enabled']; } elseif ( array_key_exists( 'enable_breadcrumbs', $options ) ) { $global_breadcrumbs = (bool) $options['enable_breadcrumbs']; } $defaults = array( 'schema_type' => 'auto', 'breadcrumbs_enabled' => $global_breadcrumbs, 'faq_enabled' => true, 'schema_priority' => $options['avc_ais_priority'] ?? 'avc', ); $settings = isset( $options['content_type_settings'] ) && is_array( $options['content_type_settings'] ) ? $options['content_type_settings'] : array(); if ( isset( $context['post_type'], $settings['post_types'][ $context['post_type'] ] ) ) { return array_merge( $defaults, $settings['post_types'][ $context['post_type'] ] ); } if ( isset( $context['taxonomy'], $settings['taxonomies'][ $context['taxonomy'] ] ) ) { return array_merge( $defaults, $settings['taxonomies'][ $context['taxonomy'] ] ); } return $defaults; } }