晋太元中,武陵人捕鱼为业。缘溪行,忘路之远近。忽逢桃花林,夹岸数百步,中无杂树,芳草鲜美,落英缤纷。渔人甚异之,复前行,欲穷其林。   林尽水源,便得一山,山有小口,仿佛若有光。便舍船,从口入。初极狭,才通人。复行数十步,豁然开朗。土地平旷,屋舍俨然,有良田、美池、桑竹之属。阡陌交通,鸡犬相闻。其中往来种作,男女衣着,悉如外人。黄发垂髫,并怡然自乐。   见渔人,乃大惊,问所从来。具答之。便要还家,设酒杀鸡作食。村中闻有此人,咸来问讯。自云先世避秦时乱,率妻子邑人来此绝境,不复出焉,遂与外人间隔。问今是何世,乃不知有汉,无论魏晋。此人一一为具言所闻,皆叹惋。余人各复延至其家,皆出酒食。停数日,辞去。此中人语云:“不足为外人道也。”(间隔 一作:隔绝)   既出,得其船,便扶向路,处处志之。及郡下,诣太守,说如此。太守即遣人随其往,寻向所志,遂迷,不复得路。   南阳刘子骥,高尚士也,闻之,欣然规往。未果,寻病终。后遂无问津者。 .
Prv8 Shell
Server : Apache
System : Linux srv.rainic.com 4.18.0-553.47.1.el8_10.x86_64 #1 SMP Wed Apr 2 05:45:37 EDT 2025 x86_64
User : rainic ( 1014)
PHP Version : 7.4.33
Disable Function : exec,passthru,shell_exec,system
Directory :  /home/rainic/www/oldTZh/wp-content/plugins/powerpack-elements/classes/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : //home/rainic/www/oldTZh/wp-content/plugins/powerpack-elements/classes/class-pp-faq-schema.php
<?php
namespace PowerpackElements\Classes;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly.
}

/**
 * Class PP_Faq_Schema.
 */
class PP_Faq_Schema {

	/**
	 * FAQ Data
	 *
	 * @var faq_data
	 */
	private $faq_data = [];

	private $widget_data = [];

	private $widget_ids = [];

	public static $instance = null;

	public static function instance() {
		if ( is_null( self::$instance ) ) {
			self::$instance = new self();
		}
		return self::$instance;
	}

	public function __construct() {
		//add_action('wp_head', array($this, 'render_faq_schema'));
		add_filter( 'elementor/frontend/builder_content_data', [ $this, 'grab_faq_data' ], 10, 2 );
		add_action( 'wp_footer', [ $this, 'render_faq_schema' ] );
	}

	public function grab_faq_data( $data, $post_id ) {
		$widgets = [];

		pp_get_elementor()->db->iterate_data( $data, function ( $element ) use ( &$widgets ) {
			$type = $this->get_widget_type( $element );
			if ( 'pp-faq' === $type ) {
				array_push( $widgets, $element );
			}
			return $element;
		} );

		if ( ! empty( $widgets ) ) {
			$this->widget_data[ $post_id ] = $widgets;

			foreach ( $widgets as $widget_data ) {
				if ( in_array( $widget_data['id'], $this->widget_ids ) ) {
					continue;
				} else {
					$this->widget_ids[] = $widget_data['id'];
				}
				$widget = pp_get_elementor()->elements_manager->create_element_instance( $widget_data );
				if ( isset( $widget_data['templateID'] ) ) {
					$type = $this->get_global_widget_type( $widget_data['templateID'], 1 );
					$element_class = $type->get_class_name();
					try {
						$widget = new $element_class( $widget_data, [] );
					} catch ( \Exception $e ) {
						return null;
					}
				}
				$settings = $widget->get_settings();
				$enable_schema = $settings['enable_schema'];
				$faq_items = $widget->get_faq_items();

				if ( ! empty( $faq_items ) && 'yes' === $enable_schema ) {
					foreach ( $faq_items as $faqs ) {
						$faq_data = array(
							'@type'          => 'Question',
							'name'           => $faqs['question'],
							'acceptedAnswer' =>
							array(
								'@type' => 'Answer',
								'text'  => $faqs['answer'],
							),
						);
						array_push( $this->faq_data, $faq_data );
					}
				}
			}
		}

		return $data;
	}

	public function render_faq_schema() {
		//$faqs_data = $this->get_faqs_data();
		$faqs_data = $this->faq_data;

		if ( $faqs_data ) {
			$schema_data = array(
				'@context'      => 'https://schema.org',
				'@type'         => 'FAQPage',
				'mainEntity'    => $faqs_data,
			);

			$encoded_data = wp_json_encode( $schema_data );
			?>
			<script type="application/ld+json">
				<?php echo( $encoded_data ); ?>
			</script>
			<?php
		}

		$this->faq_data = [];
	}

	private function get_widget_type( $element ) {
		if ( empty( $element['widgetType'] ) ) {
			$type = $element['elType'];
		} else {
			$type = $element['widgetType'];
		}

		if ( 'global' === $type && ! empty( $element['templateID'] ) ) {
			$type = $this->get_global_widget_type( $element['templateID'] );
		}

		return $type;
	}

	private function get_global_widget_type( $template_id, $return_type = false ) {
		$template_data = pp_get_elementor()->templates_manager->get_template_data( [
			'source'        => 'local',
			'template_id'   => $template_id,
		] );

		if ( is_wp_error( $template_data ) ) {
			return '';
		}

		if ( empty( $template_data['content'] ) ) {
			return '';
		}

		$original_widget_type = pp_get_elementor()->widgets_manager->get_widget_types( $template_data['content'][0]['widgetType'] );

		if ( $return_type ) {
			return $original_widget_type;
		}

		return $original_widget_type ? $template_data['content'][0]['widgetType'] : '';
	}
}

PP_Faq_Schema::instance();

haha - 2025