晋太元中,武陵人捕鱼为业。缘溪行,忘路之远近。忽逢桃花林,夹岸数百步,中无杂树,芳草鲜美,落英缤纷。渔人甚异之,复前行,欲穷其林。 林尽水源,便得一山,山有小口,仿佛若有光。便舍船,从口入。初极狭,才通人。复行数十步,豁然开朗。土地平旷,屋舍俨然,有良田、美池、桑竹之属。阡陌交通,鸡犬相闻。其中往来种作,男女衣着,悉如外人。黄发垂髫,并怡然自乐。 见渔人,乃大惊,问所从来。具答之。便要还家,设酒杀鸡作食。村中闻有此人,咸来问讯。自云先世避秦时乱,率妻子邑人来此绝境,不复出焉,遂与外人间隔。问今是何世,乃不知有汉,无论魏晋。此人一一为具言所闻,皆叹惋。余人各复延至其家,皆出酒食。停数日,辞去。此中人语云:“不足为外人道也。”(间隔 一作:隔绝) 既出,得其船,便扶向路,处处志之。及郡下,诣太守,说如此。太守即遣人随其往,寻向所志,遂迷,不复得路。 南阳刘子骥,高尚士也,闻之,欣然规往。未果,寻病终。后遂无问津者。
|
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 : |
<?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();