Файловый менеджер - Редактировать - /home/beautybuzzbeyond/public_html/wp-content/plugins/one-click-demo-import/inc/CreateDemoContent/DemoContentCreator.php
Назад
<?php /** * Create Demo Content - responsible for importing pre-created demo content. * * @package ocdi */ namespace OCDI\CreateDemoContent; use OCDI\Helpers; use OCDI\Importer; use OCDI\Logger; use OCDI\OneClickDemoImport; use OCDI\PluginInstaller; class DemoContentCreator { /** * Holds all pre-created content. * * @var array */ private $content; /** * Initialize everything needed for the demo content creator class to function properly. */ public function init() { $this->set_content(); add_action( 'ocdi/demo_content_creator_after_import', array( $this, 'after_import_wpforms_setup' ) ); add_action( 'wp_ajax_ocdi_import_created_content', array( $this, 'import_created_content' ) ); } /** * Get all default pre-created demo content data. * * @return array[] */ public function get_default_content() { return array( array( 'slug' => 'about-page', 'file' => OCDI_PATH . 'assets/demo-content/about-page.xml', 'name' => esc_html__( 'About Us', 'one-click-demo-import' ), 'description' => esc_html__( 'Introduce yourself and your business with a clean layout to reassure your leads and customers.', 'one-click-demo-import' ), 'required_plugins' => array(), ), array( 'slug' => 'book-now-page', 'file' => OCDI_PATH . 'assets/demo-content/book-now-page.xml', 'name' => esc_html__( 'Book Now', 'one-click-demo-import' ), 'description' => esc_html__( 'Expand your reach by accepting appointments online plus detailing your services and staff.', 'one-click-demo-import' ), 'required_plugins' => array(), ), array( 'slug' => 'contact-page', 'file' => OCDI_PATH . 'assets/demo-content/contact-page.xml', 'name' => esc_html__( 'Contact Us', 'one-click-demo-import' ), 'description' => esc_html__( 'Make it easy to get in touch with you through a completely customizable built-in contact form.', 'one-click-demo-import' ), 'required_plugins' => array( 'wpforms-lite' ), ), array( 'slug' => 'faq-page', 'file' => OCDI_PATH . 'assets/demo-content/faq-page.xml', 'name' => esc_html__( 'FAQ', 'one-click-demo-import' ), 'description' => esc_html__( 'Lighten the load on your support team or your inbox by addressing frequently asked questions.', 'one-click-demo-import' ), 'required_plugins' => array(), ), array( 'slug' => 'meet-the-team-page', 'file' => OCDI_PATH . 'assets/demo-content/meet-the-team-page.xml', 'name' => esc_html__( 'Meet the Team', 'one-click-demo-import' ), 'description' => esc_html__( 'Help potential clients feel more at ease by showing off your hard-working and trustworthy team.', 'one-click-demo-import' ), 'required_plugins' => array( 'wpforms-lite' ), ), array( 'slug' => 'menu-page', 'file' => OCDI_PATH . 'assets/demo-content/menu-page.xml', 'name' => esc_html__( 'Menu', 'one-click-demo-import' ), 'description' => esc_html__( 'Display your delicious dishes online to entice website visitors to become restaurant customers.', 'one-click-demo-import' ), 'required_plugins' => array(), ), array( 'slug' => 'portfolio-page', 'file' => OCDI_PATH . 'assets/demo-content/portfolio-page.xml', 'name' => esc_html__( 'Portfolio', 'one-click-demo-import' ), 'description' => esc_html__( 'Impress leads by visually showcasing your achievements, case studies, and past work.', 'one-click-demo-import' ), 'required_plugins' => array(), ), array( 'slug' => 'services-page', 'file' => OCDI_PATH . 'assets/demo-content/services-page.xml', 'name' => esc_html__( 'Services', 'one-click-demo-import' ), 'description' => esc_html__( 'Let the world know your services or products\' cost and features in an organized pricing table.', 'one-click-demo-import' ), 'required_plugins' => array(), ), array( 'slug' => 'shop-page', 'file' => OCDI_PATH . 'assets/demo-content/shop-page.xml', 'name' => esc_html__( 'Shop', 'one-click-demo-import' ), 'description' => esc_html__( 'Categorize and sell your products online while displaying reviews from happy customers.', 'one-click-demo-import' ), 'required_plugins' => array(), ), array( 'file' => OCDI_PATH . 'assets/demo-content/testimonials-page.xml', 'slug' => 'testimonials-page', 'name' => esc_html__( 'Testimonials', 'one-click-demo-import' ), 'description' => esc_html__( 'Tap into the power of social proof by displaying real-life testimonials on your website.', 'one-click-demo-import' ), 'required_plugins' => array(), ), ); } /** * Set all pre-created demo pages. * With our pre-created pages being set as defaults. */ public function set_content() { $all_content = array_merge( $this->get_default_content(), Helpers::apply_filters( 'ocdi/register_created_demo_content', array() ) ); $this->content = array_filter( $all_content, function ( $item ) { if ( empty( $item['slug'] ) || empty( $item['name'] ) || empty( $item['file'] ) ) { return false; } return true; } ); } public function after_import_wpforms_setup( $slug ) { // Perform WPForms setup only if this is a contact or the meet the team page import. if ( ! in_array( $slug, array( 'contact-page', 'meet-the-team-page' ), true ) ) { return; } // Is WPForms plugin active? $plugin_installer = new PluginInstaller(); if ( ! ( $plugin_installer->is_plugin_active( 'wpforms-lite' ) || $plugin_installer->is_plugin_active( 'wpforms' ) ) ) { wp_send_json_error( esc_html__( 'Could not complete the import process for this page. Required WPForms plugin is not activated.', 'one-click-demo-import' ) ); } if ( ! function_exists( 'wpforms' ) ) { wp_send_json_error( esc_html__( 'Could not complete the import process for this page. Required WPForms plugin doesn\'t exist.', 'one-click-demo-import' ) ); } $form_title = ( $slug === 'meet-the-team-page' ) ? esc_html__( 'Meet the Team Form', 'one-click-demo-import' ) : esc_html__( 'Contact Form', 'one-click-demo-import' ); $form_id = $this->create_wpforms_form( $form_title ); if ( empty( $form_id ) ) { wp_send_json_error( esc_html__( 'Could not complete the import process for this page. Something went wrong while creating a WPForms contact form.', 'one-click-demo-import' ) ); } $update_page = $this->update_contact_page_form_id( $form_id ); if ( empty( $update_page ) ) { wp_send_json_error( esc_html__( 'Could not complete the import process for this page. Could not update the imported page with correct WPForms form ID.', 'one-click-demo-import' ) ); } } /** * AJAX callback for importing the pre-created demo content. * Has to contain the `slug` POST parameter. */ public function import_created_content() { check_ajax_referer( 'ocdi-ajax-verification', 'security' ); // Check if user has the WP capability to import content. if ( ! current_user_can( 'import' ) ) { wp_send_json_error( esc_html__( 'Could not import this page. You don\'t have permission to import content.', 'one-click-demo-import' ) ); } $slug = ! empty( $_POST['slug'] ) ? sanitize_key( wp_unslash( $_POST['slug'] ) ) : ''; if ( empty( $slug ) ) { wp_send_json_error( esc_html__( 'Could not import this page. Page slug is missing.', 'one-click-demo-import' ) ); } // Install required plugins. $content_item = $this->get_content_data( $slug ); $ocdi = OneClickDemoImport::get_instance(); $refresh = false; if ( ! empty( $content_item['required_plugins'] ) ) { foreach ( $content_item['required_plugins'] as $plugin_slug ) { if ( ! $ocdi->plugin_installer->is_plugin_active( $plugin_slug ) ) { $ocdi->plugin_installer->install_plugin( $plugin_slug ); $refresh = true; } } } if ( $refresh ) { wp_send_json_success( [ 'refresh' => true ] ); } // Import the pre-created page. $error = $this->import_content( $slug ); if ( ! empty( $error ) ) { wp_send_json_error( sprintf( /* translators: %s - The actual error message. */ esc_html__( 'An error occured while importing this page: %s', 'one-click-demo-import' ), esc_html( $error ) ) ); } wp_send_json_success(); } /** * Get the data of a registered pre-created content via the slug. * * @param string $slug The pre-created content slug. * * @return array */ public function get_content_data( $slug ) { $data = []; foreach ( $this->content as $item ) { if ( $item['slug'] === $slug ) { $data = $item; break; } } return $data; } /** * Import the content for the selected pre-created content slug. * * @param string $slug The pre-created content slug. * * @return string */ private function import_content( $slug ) { $import_file = $this->get_import_file( $slug ); if ( empty( $import_file ) ) { return esc_html__( 'The demo content import file is missing.', 'one-click-demo-import' ); } // Change the date to allow same page import multiple times. add_filter( 'wxr_importer.pre_process.post', function ( $data ) { if ( $data['post_type'] === 'page' ) { $data['post_date'] = date( 'Y-m-d H:i:s' ); } return $data; } ); // Increase PHP max execution time. if ( strpos( ini_get( 'disable_functions' ), 'set_time_limit' ) === false ) { set_time_limit( Helpers::apply_filters( 'ocdi/set_time_limit_for_demo_data_import', 300 ) ); } // Disable import of authors. add_filter( 'wxr_importer.pre_process.user', '__return_false' ); // Configure logger instance and set it to the importer. $logger = new Logger(); $logger->min_level = 'warning'; // Create importer instance with proper parameters. $importer = new Importer( array( 'fetch_attachments' => true, 'aggressive_url_search' => true, 'prefill_existing_posts' => false, ), $logger ); Helpers::do_action( 'ocdi/demo_content_creater_before_import', $slug ); ob_start(); $importer->import( $import_file ); $message = ob_get_clean(); // Catch any output and clear the buffers. Helpers::do_action( 'ocdi/demo_content_creator_after_import', $slug ); return $importer->logger->error_output; } /** * Get the demo import file for the provided slug. * * @param string $slug The pre-created content slug. * * @return string */ private function get_import_file( $slug ) { $content_data = $this->get_content_data( $slug ); return ! empty( $content_data['file'] ) ? $content_data['file'] : ''; } /** * Create a WPForms contact form, for the pre-created pages. * * @param string $title The title of the contact form. * * @return false|int */ private function create_wpforms_form( $title ) { $form_id = wpforms()->form->add( $title ); if ( empty( $form_id ) || is_wp_error( $form_id ) ) { return false; } $form_id = wpforms()->form->update( $form_id, array( 'id' => $form_id, 'field_id' => '3', 'fields' => array( '0' => array( 'id' => '0', 'type' => 'name', 'format' => 'first-last', 'label' => esc_html__( 'Name', 'one-click-demo-import' ), 'required' => '1', 'size' => 'medium', ), '1' => array( 'id' => '1', 'type' => 'email', 'label' => esc_html__( 'Email', 'one-click-demo-import' ), 'required' => '1', 'size' => 'medium', ), '2' => array( 'id' => '2', 'type' => 'textarea', 'label' => esc_html__( 'Comment or Message', 'one-click-demo-import' ), 'description' => '', 'required' => '1', 'size' => 'medium', 'placeholder' => '', 'css' => '', ), ), 'settings' => array( 'form_title' => $title, 'notification_enable' => '1', 'notifications' => array( '1' => array( 'email' => '{admin_email}', 'sender_address' => '{admin_email}', 'replyto' => '{field_id="1"}', 'message' => '{all_fields}', ), ), 'confirmations' => array( '1' => array( 'type' => 'message', 'message' => esc_html__( 'Thanks for contacting us! We will be in touch with you shortly.', 'one-click-demo-import' ), 'message_scroll' => '1', ), ), 'antispam' => '1', 'submit_text' => esc_html__( 'Submit', 'one-click-demo-import' ), 'submit_text_processing' => esc_html__( 'Sending...', 'one-click-demo-import' ), ), ) ); if ( empty( $form_id ) || is_wp_error( $form_id ) ) { return false; } return $form_id; } /** * Find the imported contact page and update the form ID. * * @param int $form_id The WPForms form ID. * * @return bool */ private function update_contact_page_form_id( $form_id ) { $pages = get_posts( array( 'post_type' => 'page', 'meta_query' => array( array( 'key' => 'ocdi_precreated_demo', 'value' => 'contact-page', ), array( 'key' => 'ocdi_precreated_demo_updated', 'value' => 'no', ) ), ) ); if ( empty( $pages ) ) { return false; } $contact_page = $pages[0]; // Replace the placeholder form ID with the newly created contact form. $contact_page->post_content = str_replace( '9999', (string) $form_id, $contact_page->post_content ); $update_page = wp_update_post( $contact_page, true ); if ( is_wp_error( $update_page ) ) { return false; } update_post_meta( $contact_page->ID, 'ocdi_precreated_demo_updated', 'yes' ); return true; } }
| ver. 1.4 |
Github
|
.
| PHP 8.0.30 | Генерация страницы: 0 |
proxy
|
phpinfo
|
Настройка