/
impex-import-extension-wp-options.php
56 lines (43 loc) · 1.84 KB
/
impex-import-extension-wp-options.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<?php
namespace cm4all\wp\impex;
// Exit if accessed directly.
if (!defined('ABSPATH')) {
exit();
}
require_once ABSPATH . '/wp-admin/includes/import.php';
require_once __DIR__ . '/interface-impex-named-item.php';
require_once __DIR__ . '/class-impex.php';
use cm4all\wp\impex\Impex;
function __WpOptionsImportProviderCallback(array $slice, array $options, ImpexImportTransformationContext $transformationContext): bool
{
if ($slice[Impex::SLICE_TAG] === WpOptionsExporter::SLICE_TAG) {
if ($slice[Impex::SLICE_META][Impex::SLICE_META_ENTITY] === WpOptionsExporter::SLICE_META_ENTITY_WP_OPTIONS) {
if ($slice[Impex::SLICE_VERSION] !== WpOptionsExporter::VERSION) {
throw new ImpexImportRuntimeException(sprintf('Dont know how to import slice(tag="%s", version="%s") : unsupported version. current version is "%s"', WpOptionsExporter::SLICE_TAG, $slice[Impex::SLICE_VERSION], WpOptionsExporter::VERSION));
}
foreach ($slice[Impex::SLICE_DATA] as $wpOptionName => $wpOptionValue) {
\update_option($wpOptionName, $wpOptionValue);
}
// remember updated option names
$updatedOptions = \get_option(ImpexImport::KEY_TRANSIENT_IMPORT_METADATA, []);
$updatedOptions = array_merge($updatedOptions, array_keys($slice[Impex::SLICE_DATA]));
$updatedOptions = array_unique($updatedOptions);
\update_option(ImpexImport::KEY_TRANSIENT_IMPORT_METADATA, $updatedOptions);
return true;
}
}
return false;
}
interface WpOptionsImporter
{
const PROVIDER_NAME = self::class;
}
function __registerWpOptionsImportProvider()
{
$provider = Impex::getInstance()->Import->addProvider(WpOptionsImporter::PROVIDER_NAME, __NAMESPACE__ . '\__WpOptionsImportProviderCallback');
return $provider;
}
\add_action(
Impex::WP_ACTION_REGISTER_PROVIDERS,
__NAMESPACE__ . '\__registerWpOptionsImportProvider',
);