2026-02-05 17:08:59 +03:00

132 lines
2.8 KiB
PHP

<?php
/**
* Fusion-Faqs main class.
*
* @package Fusion-Faqs
* @since 5.1.2
*/
if ( ! class_exists( 'Fusion_Faqs' ) ) {
/**
* The main Fusion_Faqs class.
*/
class Fusion_Faqs {
/**
* The one, true instance of this object.
*
* @static
* @access private
* @var object
*/
private static $instance;
/**
* Constructor.
*
* @access public
*/
private function __construct() {
// Add thumbnails to FAQs.
add_filter( 'manage_avada_faq_posts_columns', 'fusion_wp_list_add_column', 10 );
add_action( 'manage_avada_faq_posts_custom_column', 'fusion_add_thumbnail_in_column', 10, 2 );
// JSON-LD implementation for FAQs.
add_action( 'wp_footer', [ $this, 'faq_json_ld' ] );
}
/**
* Creates or returns an instance of this class.
*
* @static
* @access public
* @since 2.2
*/
public static function get_instance() {
// If an instance hasn't been created and set to $instance create an instance and set it to $instance.
if ( null === self::$instance ) {
self::$instance = new Fusion_Faqs();
}
return self::$instance;
}
/**
* Add JSON-LD for FAQs.
*
* @access public
* @since 4.2.0
* @return void
*/
public function faq_json_ld() {
if ( ! function_exists( 'awb_get_fusion_settings' ) ) {
return;
}
$fusion_settings = awb_get_fusion_settings();
if ( ! class_exists( 'Fusion_JSON_LD' ) || ( ! $fusion_settings->get( 'disable_date_rich_snippet_pages' ) || ! $fusion_settings->get( 'disable_rich_snippet_faq' ) ) ) {
return;
}
// Handle FAQ Archives.
if ( is_post_type_archive( 'avada_faq' ) ) {
global $wp_query;
if ( $wp_query->posts ) {
foreach ( $wp_query->posts as $faq ) {
new Fusion_JSON_LD(
'fusion-faq',
[
'@context' => 'https://schema.org',
'@type' => [ 'WebPage', 'FAQPage' ],
'mainEntity' => [
[
'@type' => 'Question',
'name' => $faq->post_title,
'acceptedAnswer' => [
'@type' => 'Answer',
'text' => $faq->post_content,
],
],
],
]
);
}
}
}
if ( is_singular( 'avada_faq' ) ) {
new Fusion_JSON_LD(
'fusion-faq',
[
'@context' => 'https://schema.org',
'@type' => [ 'FAQPage' ],
'mainEntity' => [
[
'@type' => 'Question',
'name' => get_the_title(),
'acceptedAnswer' => [
'@type' => 'Answer',
'text' => get_the_content(),
],
],
],
]
);
}
}
}
}
/**
* Instantiates the Fusion_Faqs class.
* Make sure the class is properly set-up.
*
* @return object Fusion_App
*/
function Fusion_Faqs() { // phpcs:ignore WordPress.NamingConventions
return Fusion_Faqs::get_instance();
}
Fusion_Faqs();