Migrar el contenido de un sitio web antiguo a WordPress puede ser una tarea laboriosa si se hace manualmente. Sin embargo, utilizando PHP y aprovechando las capacidades de scraping y las funciones internas de WordPress, podemos automatizar gran parte del proceso. En este artículo, te explicaremos paso a paso cómo extraer contenido de una web existente y crear automáticamente entradas en WordPress con ese contenido, incluyendo metadatos y categorías.

Paso 1: Preparar el Entorno en WordPress

Para empezar, asegúrate de tener acceso al sistema de archivos de tu instalación de WordPress y permisos de administrador en el panel de WordPress. Así podrás crear una función en PHP que realice scraping del contenido de tu web y lo inserte en tu nueva instalación de WordPress.

Paso 2: Extraer el Contenido de la Web Actual

Usaremos wp_remote_get y la biblioteca DOMDocument en PHP para obtener y procesar el HTML de la página de origen. Este proceso nos permitirá acceder a los elementos de título, contenido y metadatos SEO en cada página.

Aquí tienes un ejemplo de código para obtener datos de una URL:

phpCopiar código// Ejemplo de scraping en una URL específica
$url = 'https://ejemplo.com/pagina-a-extraer'; // URL de la página a copiar
$response = wp_remote_get($url);
if (!is_wp_error($response)) {
    $html = wp_remote_retrieve_body($response);
    $dom = new DOMDocument();
    libxml_use_internal_errors(true); // Suprime los errores de HTML mal formateado
    $dom->loadHTML(mb_convert_encoding($html, 'HTML-ENTITIES', 'UTF-8'));
    libxml_clear_errors();

    // Extraer el título de la página
    $titulo = $dom->getElementsByTagName('h1')->item(0)->nodeValue;

    // Extraer el contenido principal
    $contenido = '';
    $contentElements = $dom->getElementsByTagName('p');
    foreach ($contentElements as $element) {
        $contenido .= $dom->saveHTML($element);
    }

    // Extraer metadatos SEO
    $meta_title = '';
    $meta_description = '';
    foreach ($dom->getElementsByTagName('meta') as $meta) {
        if ($meta->getAttribute('name') === 'title') {
            $meta_title = $meta->getAttribute('content');
        }
        if ($meta->getAttribute('name') === 'description') {
            $meta_description = $meta->getAttribute('content');
        }
    }
}

En este ejemplo:

Paso 3: Crear Entradas en WordPress con los Datos Extraídos

Una vez que tengamos los datos, usaremos la función wp_insert_post para crear entradas en WordPress automáticamente.

A continuación, te mostramos cómo se ve una función completa que realiza la creación de entradas con los datos obtenidos:

phpCopiar códigofunction insertar_contenido_scrapeado() {
    // Array simulando los datos obtenidos por scraping de varias URLs
    $entradas = array(
        array(
            'titulo' => 'Ejemplo de Título',
            'contenido' => 'Este es el contenido extraído de la página web.',
            'categoria' => 'Categoría de ejemplo',
            'meta_title' => 'Título SEO Ejemplo',
            'meta_description' => 'Descripción SEO de ejemplo para mejorar el posicionamiento.'
        ),
        // Aquí puedes agregar más entradas conforme al scraping que realices
    );

    foreach ($entradas as $entrada) {
        // Verifica si ya existe una entrada con el mismo título
        $existing_post = get_page_by_title($entrada['titulo'], OBJECT, 'post');
        
        if (!$existing_post) {
            // Inserta una nueva entrada
            $post_id = wp_insert_post(array(
                'post_title'    => $entrada['titulo'],
                'post_content'  => $entrada['contenido'],
                'post_status'   => 'publish',
                'post_type'     => 'post'
            ));

            if ($post_id && !is_wp_error($post_id)) {
                // Asigna la categoría
                wp_set_post_categories($post_id, array(get_cat_ID($entrada['categoria'])));

                // Agrega metadatos SEO
                update_post_meta($post_id, '_genesis_title', $entrada['meta_title']);
                update_post_meta($post_id, '_genesis_description', $entrada['meta_description']);
            }
        }
    }
}
// Hook para ejecutar la función cuando WordPress se inicializa
add_action('init', 'insertar_contenido_scrapeado');

Explicación de la Función

  1. Arreglo de Datos ($entradas): Este arreglo simula los datos extraídos. Cada elemento contiene titulo, contenido, categoria, meta_title y meta_description.
  2. Comprobación de Duplicados: Antes de crear una nueva entrada, la función verifica si ya existe una con el mismo título usando get_page_by_title. Si encuentra una coincidencia, omite la creación para evitar duplicados.
  3. Creación de Entradas: Si no existe una entrada duplicada, wp_insert_post crea una nueva entrada con el título y el contenido.
  4. Asignación de Categoría: Asigna la categoría de la entrada usando wp_set_post_categories. La categoría debe existir en WordPress; de lo contrario, se puede crear previamente.
  5. Adición de Metadatos SEO: Usamos update_post_meta para guardar los valores de meta_title y meta_description en la entrada, lo cual es útil para optimizar el SEO.

Paso 4: Ejecución y Ajustes

El código está configurado para ejecutarse al inicializar WordPress, usando el hook init. Puedes agregar esta función en el archivo functions.php de tu tema o en un archivo PHP independiente si estás creando un plugin personalizado. Ten en cuenta estos detalles:

Consideraciones Finales

Usar scraping e inserción automática en WordPress es una excelente forma de simplificar la migración de contenido y puede ahorrarte horas de trabajo manual. Sin embargo, es importante respetar las políticas de uso del contenido si se trata de información de terceros y asegurarte de que tienes permisos para realizar scraping.

Con este enfoque, habrás creado un sistema personalizado que lleva contenido desde una web existente a tu nuevo sitio en WordPress, facilitando el proceso y permitiéndote enfocarte en la personalización y mejora de la plataforma.

If you're looking to personalize your WordPress admin area, changing the icons of your custom post types is a fantastic way to start. Advanced Custom Fields (ACF) makes this process simple. Whether you want a sleek airplane icon for your 'Travel' posts or a sturdy hammer for 'Construction' updates, ACF has got you covered.

Firstly, it’s worth browsing through the WordPress Dashicons library to pick the perfect icon for your post type.

Steps to Change Your Custom Post Type Icon with ACF:

  1. Navigate to Your Custom Post Type Settings: Access your WordPress dashboard and locate the ACF settings for your custom post types.
  2. Go to the Visibility Tab: Within the settings, find the 'Visibility' tab which controls aspects like where your custom post type appears in the admin menu.
  3. Locate the Menu Icon Field: Within this tab, there's a field titled 'Icono de menú' – this is where the magic happens.
  4. Insert Your Dashicon Class: Copy the class name of your chosen dashicon from the Dashicons library and paste it into the 'Icono de menú' field. For example, if you're going for that airplane look, you'd input dashicons-airplane.
  5. Save Your Changes: After inputting the class, save your settings. Your custom post type will now have a shiny new icon.

Why Customize?

Customizing the icons of your post types can significantly enhance the navigation experience in your dashboard, making it visually intuitive. With a library as extensive as WordPress Dashicons, your options are nearly limitless.

In Conclusion

Personalizing your WordPress site extends beyond just the user-facing elements. The admin dashboard can and should feel just as much 'yours' as the rest of the site. With ACF and the Dashicons library, you can achieve just that with a few clicks.

Feel free to get creative and remember, your dashboard should be as unique as the content you create!

Need help with your project?
Let’s get it done.

START A PROJECT
Strategic Design.

Contact Us

contact@brucdesign.com