Je vois depuis quelques jours une fonctionnalité de l’option d’installation de contenu démo en un clic sur certains thèmes WordPress puissants. Principalement sur des thèmes de Themeforest.
J'aimerais savoir si quelqu'un a une idée de la meilleure façon de mettre cela en œuvre. Ou toute autre ressource pour le faire. Quelques astuces, idées ou mots-clés suffiraient. Je ne vous demande pas de m'écrire les codes ou quelque chose.
Je me demande si vous connaissez la bonne façon de faire cela.
Merci d'avance.
si vous vérifiez le plug-in d'importation Wordpress, il est facile d'implémenter cette fonctionnalité. Mais si vous voulez la réponse directe, la voici
Tout d’abord, nous devons copier les fichiers du plug-in d’importateur Wordpress dans notre répertoire de thèmes. comme ça
1. themes/bootstrapguru_theme/inc/wordpress-importer.php 2. themes/bootstrapguru_theme/inc/parser.php
vous pouvez trouver ce plugin ici wordpress importer
après cette étape, nous allons créer 3 nouveaux fichiers.
Fichier 1: bootstrapguru-import.php
collez le code ci-dessous dans ce fichier.
class bootstrapguru_import extends WP_Import
{
function check()
{
//you can add any extra custom functions after the importing of demo coment is done
}
}
Fichier 2: bootstrapguru-importer.php
collez le code ci-dessous dans ce fichier.
add_action( 'wp_ajax_my_action', 'my_action_callback' );
function my_action_callback()
{
global $wpdb;
if ( !defined('WP_LOAD_IMPORTERS') ) define('WP_LOAD_IMPORTERS', true);
// Load Importer API
require_once ABSPATH . 'wp-admin/includes/import.php';
if ( ! class_exists( 'WP_Importer' ) ) {
$class_wp_importer = ABSPATH . 'wp-admin/includes/class-wp-importer.php';
if ( file_exists( $class_wp_importer ) )
{
require $class_wp_importer;
}
}
if ( ! class_exists( 'WP_Import' ) ) {
$class_wp_importer = get_template_directory() ."/inc/wordpress-importer.php";
if ( file_exists( $class_wp_importer ) )
require $class_wp_importer;
}
if ( class_exists( 'WP_Import' ) )
{
$import_filepath = get_template_directory() ."/tmp/demo.xml" ; // Get the xml file from directory
include_once('bootstrapguru-import.php');
$wp_import = new bootstrapguru_import();
$wp_import->fetch_attachments = true;
$wp_import->import($import_filepath);
$wp_import->check();
}
die(); // this is required to return a proper result
}
Fichier 3: bootstrapguru-import.js
collez le code ci-dessous dans ce fichier.
(function($) {
"use strict";
$('.bootstrapguru_import').click(function(){
$import_true = confirm('are you sure to import dummy content ? it will overwrite the existing data');
if($import_true == false) return;
$('.import_message').html(' Data is being imported please be patient, while the awesomeness is being created :) ');
var data = {
'action': 'my_action'
};
// since 2.8 ajaxurl is always defined in the admin header and points to admin-ajax.php
$.post(ajaxurl, data, function(response) {
$('.import_message').html('<div class="import_message_success">'+ response +'</div>');
//alert('Got this from the server: ' + response); <i class="fa fa-spinner fa-3x fa-spin"></i>
});
});
})(jQuery);
dans le fichier ci-dessus, vous pouvez voir que nous cliquons sur un bouton avec la classe .bootstrapguru_import
activera une fonction de rappel dans wordpress. qui est créé dans fichier 2 et également en cas de succès, nous ajoutons le message à .import_message
div
nous sommes sur le point de terminer notre exercice;) disons à la wordpress que nous avons de nouveaux fichiers en incluant une seule ligne dans functions.php
include_once( 'inc/bootstrapguru-importer.php' );
donc tout est réglé presque. Maintenant, créez un bouton et div dans le panneau d’options de votre thème, le bouton activant la fonction d’importation et div permettant de poster l’importation réussie.
Faites-moi savoir si vous rencontrez des problèmes avec mon post, il se peut que je manque quelque chose. Cela a fonctionné pour moi après avoir travaillé pendant 6 heures
J'ai essayé de commenter, mais ma réputation ne suffit pas. La partie AJAX ne fonctionne pas car le fichier .js n'a pas été mis en file d'attente. Ajoutez le code ci-dessous et cela fonctionne parfaitement.
function admin_import_scripts() {
wp_register_script( 'bootstrapguru-import', get_template_directory_uri() . '/demo-importer/bootstrapguru-import.js', false, '1.0.0' );
wp_enqueue_script( 'bootstrapguru-import' );
}
add_action( 'admin_enqueue_scripts', 'admin_import_scripts' );