PHPackages                             inpsyde/multilingualpress2to3 - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. inpsyde/multilingualpress2to3

AbandonedArchivedWordpress-plugin

inpsyde/multilingualpress2to3
=============================

A WP plugin that allows migrating data from MultilingualPress version 2 to version 3.

v0.1.0-alpha2(6y ago)42032[3 issues](https://github.com/inpsyde/multilingualpress-2-to-3-migration/issues)GPL-2.0-or-laterPHPPHP ^7.0.33

Since Jun 3Pushed 4y ago7 watchersCompare

[ Source](https://github.com/inpsyde/multilingualpress-2-to-3-migration)[ Packagist](https://packagist.org/packages/inpsyde/multilingualpress2to3)[ RSS](/packages/inpsyde-multilingualpress2to3/feed)WikiDiscussions develop Synced 1mo ago

READMEChangelog (2)Dependencies (18)Versions (7)Used By (0)

MultilingualPress 2 to 3 Migration
==================================

[](#multilingualpress-2-to-3-migration)

A WP plugin that allows migrating data from MultilingualPress version 2 to version 3.

UNMAINTAINED
------------

[](#unmaintained)

*NOTE:* This repository is no longer maintained.

Installation
------------

[](#installation)

The migration tool is a WP CLI command, shipped as a regular WP plugin. Install it as you would any other plugin, i.e. in any of the following ways:

- If a build is available, you can install from ZIP.
- Install with Composer: `composer require inpsyde/multilingualpress2to3:^0.1`.
- Clone the repo into your `plugins` directory.

Requirements
------------

[](#requirements)

1. MLP3 must contain the changes made in [`eebfc1b`](https://bitbucket.org/inpsyde/multilingualpress/commits/eebfc1b9caba54e028afc491fd3005d722a89995)([`v2.11.3`](https://github.com/inpsyde/MultilingualPress/releases/tag/v2.11.3)).

    This is necessary in order to satisfy requirement **4**.
2. MLP2 must contain the changes in [`7dccc9c`](https://github.com/inpsyde/MultilingualPress/commit/7dccc9ce10b0f361369e4987371312d859a9d73c)([`3.2.0`](https://bitbucket.org/inpsyde/multilingualpress/src/3.2.0/)).

    This is necessary in order to prevent automatic deletion of the `site_relations` table by MLP2 on uninstall. This table has the same name in MLP2 and MLP3, and therefore should remain after MLP2 is uninstalled.
3. This plugin must be active.

    It registers the WP CLI command, and is also necessary in order to satisfy requirement **4**.
4. MLP3 must be active during migration.

    - The tool assumes that the tables to migrate the data into have already been created.
    - The tool uses some info exposed by MLP3 classes:
        - Languages table structure, to create the temporary table.
5. All options tables must have the same collation.

    This is necessary in order to run a `UNION` query on them, which is needed for migrating redirections.

Usage
-----

[](#usage)

1. Back up your database!
2. Make sure that **all 3** plugins are **installed but inactive**: [MLP2](https://wordpress.org/plugins/multilingual-press/), [MLP3](https://multilingualpress.org), Migration (this plugin).
3. Activate the Migration plugin.
4. Activate MLP3.
5. Run the migration, i.e. `wp mlp2to3 all`, and make sure it completes all migrations successfully.
6. Deactivate and then **uninstall** MLP2 by clicking the "Delete" button.
7. Deactivate and then uninstall the Migration plugin.

You can also run `wp help mlp2to3` to see all available arguments and flags.

Please consult the [documentation](https://multilingualpress.org/docs/multilingualpress-2-3-migration-tool/) for a more verbose explanation.

Known Limitations
-----------------

[](#known-limitations)

1. When migrating the language repository, most languages will be migrated.

    Ideally, only the custom (modified) languages would be migrated. However, in the current state it is not possible to determine which languages are different from their defaults. Due to inconsistencies between language defaults in MLP2 vs MLP3, the best possible comparison strategy determines most MLP2 languages to be different from those in MLP3 defaults. This results in the custom languages being migrated, but also over a hundred others.

Development
-----------

[](#development)

This project uses Docker for testing and development. Therefore, you must have [Docker Toolbox](https://docs.docker.com/toolbox/)or [Docker Desktop](https://www.docker.com/products/docker-desktop) - whichever is suitable for your platform - in order to use the bundled development and testing environment.

### Dependency Management

[](#dependency-management)

After you have cloned the project, you need to install dependencies compatible with the project's target environment. The environment already exists, and is the `test` Docker Compose service. If you are on Windows and using MinTTY/GitBash or similar, you may want to use the `winpty`utility by prefixing commands to be run in docker with it.

#### Authentication

[](#authentication)

Before this, however, you will need to configure Composer authentication. This is because some of the dependencies are private packages (currently the MLP3 plugin package), and therefore this project uses Packagist.com. Obviously for technical details the authentication details are missing from this package, and you will need to configure your own. Run the following in the project root:

```
composer config --auth http-basic.repo.packagist.com

```

This will create an `auth.json` file with these credentials, which is set to be ignored by Git - these are your personal details, do not commit them!

#### Installing Deps

[](#installing-deps)

After you have configured authentication, just run `composer install` in the `test` container:

```
docker-compose run test composer install

```

Alternatively, when you need to update dependencies (perhaps you have added some), run this instead:

```
docker-compose run test composer update

```

### View Website

[](#view-website)

If you need to preview something visual during development, you need to access a WordPress test site. This is set up as the `wordpress` service. Just access the IP of your Docker machine.

```
$ docker-machine ip
192.168.99.100

```

If you are using some native solution instead of explicitly using Docker Machine, the IP is most likely your `localhost`.

### Access Database

[](#access-database)

The database lives in the `mysql` service. You can connect to it using your preferred client on the IP of the host machine (see above for explanation), on port `8082`. Use the `root` user with password `wordpress`.

Alternatively, you can use phpMyAdmin by accessing the machine at port `1234`, which will be handled by the `phpmyadmin` service.

### Testing

[](#testing)

Testing of the project is also handled by appropriate Docker services.

#### Acceptance

[](#acceptance)

We use Codeception to run acceptance tests, and this is what the `codecept` service is for.

Use the below command to run the `acceptance` suite in the `codecept` service:

```
docker-compose run codecept run acceptance

```

### Building

[](#building)

This project uses [Phing](https://www.phing.info/) to run tasks related to the build process. The `test`service has all environmental dependencies fulfilled. Therefore, to create a release simply run `phing` in the `test` container, e.g. to release this package as `mlp2to3` at version `0.1.0-alpha1` run the following:

```
docker-compose run test vendor/bin/phing release -Dversion=0.1.0-alpha1 -Dbuild_name=mlp2to3

```

This will create a timestamped archive in the `build/release` directory, containing the built version of the current state of the checked-out branch. The timestamp allows multiple builds of the same version to not collide. The archive will be named the same as the build name, plus the version, plus timestamp, e.g. `mlp2to3-0.1.0-alpha1-2019.06.03-14.31.zip`. The files will be additionally placed into a directory named after the build, in order to satisfy the requirement for WordPress plugins.

###  Health Score

22

—

LowBetter than 23% of packages

Maintenance5

Infrequent updates — may be unmaintained

Popularity17

Limited adoption so far

Community16

Small or concentrated contributor base

Maturity44

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 86.1% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~206 days

Total

2

Last Release

2324d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/003585053f7d5d2127d31d5a4e79ba309acc075154f5752de8f429ac42c54dbe?d=identicon)[Syde](/maintainers/Syde)

---

Top Contributors

[![XedinUnknown](https://avatars.githubusercontent.com/u/1428973?v=4)](https://github.com/XedinUnknown "XedinUnknown (204 commits)")[![Dinamiko](https://avatars.githubusercontent.com/u/456223?v=4)](https://github.com/Dinamiko "Dinamiko (29 commits)")[![bueltge](https://avatars.githubusercontent.com/u/133425?v=4)](https://github.com/bueltge "bueltge (2 commits)")[![Narek13](https://avatars.githubusercontent.com/u/11319597?v=4)](https://github.com/Narek13 "Narek13 (1 commits)")[![tyrann0us](https://avatars.githubusercontent.com/u/8144115?v=4)](https://github.com/tyrann0us "tyrann0us (1 commits)")

---

Tags

migrationmultilingualwordpress

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/inpsyde-multilingualpress2to3/health.svg)

```
[![Health](https://phpackages.com/badges/inpsyde-multilingualpress2to3/health.svg)](https://phpackages.com/packages/inpsyde-multilingualpress2to3)
```

###  Alternatives

[pimple/pimple

Pimple, a simple Dependency Injection Container

2.7k130.5M1.4k](/packages/pimple-pimple)[neos/flow

Flow Application Framework

862.0M448](/packages/neos-flow)[api-platform/state

API Platform state interfaces

223.4M57](/packages/api-platform-state)[internal/dload

Downloads binaries.

98142.7k10](/packages/internal-dload)[symfony/json-streamer

Provides powerful methods to read/write data structures from/into JSON streams.

14440.0k8](/packages/symfony-json-streamer)[rubix/server

Deploy your Rubix ML models to production with scalable stand-alone inference servers.

632.3k](/packages/rubix-server)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
