web-dev-qa-db-ja.com

WordPressテーマオプションパネルのワンクリックデモコンテンツインストール機能

私は今日、いくつかの強力なWordPressテーマでワンクリックデモコンテンツインストールオプションの機能を見ています。主にThemeforestテーマについてです。

誰かがこれを実装するための最良の方法について何か考えがあるかどうかを知りたいのですが。またはこれを行うための他のリソース。いくつかのヒント、アイデア、またはキーワードで十分です。私はあなたに私にコードか何かを書くように頼んでいません。

あなたがこれを行うための正しい方法を知っているかどうか私は思っています。

前もって感謝します。

wordpressインポータープラグインをチェックすれば、この機能を実装するのは簡単です。しかし直接答えがほしいと思えば、それはここにある

まず最初に、Wordpressインポータープラグインファイルを私たちのテーマディレクトリにコピーする必要があります。このような

 1. themes/bootstrapguru_theme/inc/wordpress-importer.php 
 2. themes/bootstrapguru_theme/inc/parser.php

このプラグインはここにあります wordpress importer

この手順の後、3つの新しいファイルを作成します。

ファイル1:bootstrapguru-import.php以下のコードをそのファイルに貼り付けます

class bootstrapguru_import extends WP_Import
{
    function check()
    {
    //you can add any extra custom functions after the importing of demo coment is done
    }
}

ファイル2:bootstrapguru-importer.php以下のコードをそのファイルに貼り付けます

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
}

ファイル3:bootstrapguru-import.js以下のコードをそのファイルに貼り付けます

(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);

上記のファイルでは、.bootstrapguru_importクラスのボタンをクリックするとワードプレスのコールバック関数が起動することがわかります。これは ファイル2 に作成され、成功した場合はメッセージを.import_message divに追加します。

functions.phpに1行を含めることで、新しいファイルがあることをwordpressに伝えることができます。

include_once( 'inc/bootstrapguru-importer.php' );

だから、すべてがほぼ設定されています。今すぐあなたのテーマオプションパネルでボタンとdivを作成してください。ここでボタンはインポート機能を起動させ、divはあなたの成功したインポートをポストすることです。

あなたが私の投稿に関して何か問題を見つけたら私に知らせてください、私は何かを逃すかもしれません。これは6時間それに取り組んだ後私のために働いた

10
bootstrapguru

コメントしようとしましたが、私の評判は十分ではありません。 .jsファイルをエンキューしていないため、AJAX partは機能しません。以下のコードを追加してください、そして、それは完全に働きます。

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' );
0