Sincronice los campos ACF entre sitios en WP multisitio

2 minutos de lectura

avatar de usuario
Staffan Estberg

He estado buscando una manera de sincronizar FCA campos a través de sitios en un sitio múltiple de WordPress. Hay 5 sitios con contenido individual pero todos usan los mismos campos ACF. Prefiero evitar tener que crear y agregar manualmente estos nuevos campos en cada sitio.

¿Hay una solución?

Usando WP 4.8 y ACF Pro 5.5.1.4

avatar de usuario
Ben Löffel

Dado que está utilizando ACF Pro, puede utilizar la función “Exportar/Importar”.

  1. Red Activar campos personalizados avanzados
  2. Cree grupos de campos en el sitio principal a través del menú de campos personalizados.
  3. Usar campos personalizados -> Exportar, seleccionar todos los grupos de campos, Exportar a PHP
  4. Pegue el PHP en las funciones de su tema (hijo).php
  5. Regrese y elimine los campos del sitio principal para que no haya duplicados.

Ahora tiene campos ACF disponibles en toda la red.

Estuve pensando en esto mismo un par de veces antes y llegué a la conclusión de que lo más fácil sería crear un repositorio de github con un conjunto de archivos acf-field-name.php y luego traer esos repositorios como submódulos a cada uno de sus proyectos. Si coloca estos archivos php en la carpeta acf dentro de su carpeta de temas y usa la función dentro de functions.php como esta

    function getAcfFileNames()
    {
        return array(
            'acf-one',
            'acf-two',
            'acf-three',
        );
    }

    function add_php_acf_field_groups()
    {
        $fileNames = getAcfFileNames();
        foreach ($fileNames as $fileName) {
            include_once 'acf/' . $fileName . '.php';
        }
    }

    ;
    add_action('acf/init', 'add_php_acf_field_groups');

Eso debería funcionar bien. Y si desea editar esos archivos acf.php dentro del proyecto, puede usar -> https://github.com/BeAPI/ACF-PHP-Recuperación para recuperar el archivo php localmente y actualizarlo. Después de eso, simplemente exporte el archivo y confírmelo a su repositorio ACF.

Aparte de eso, lamentablemente no he encontrado una solución mejor.

Hay un gran Gist de Jesse Pearson que sincroniza automáticamente todos los archivos acf-json cuando el administrador inicia sesión:

https://gist.github.com/jessepearson/a537b2f78556cd705947

En los comentarios a la esencia también puede encontrar varias mejoras en el código, ¡cuidado con eso!

Me ahorró un montón de tiempo.

Puede sincronizar los campos sin problemas, siempre que los adjunte a nombres de plantillas y no a páginas o publicaciones específicas.

https://www.advancedcustomfields.com/resources/synchronized-json/

Simplemente haga un cambio rápido en su archivo function.php.

https://www.advancedcustomfields.com/resources/local-json/

Utilicé el método de código PHP exportado cuando terminé de trabajar localmente y quiero actualizar un tema de producción.

¿Ha sido útil esta solución?