# Integración WordPress en Hosting Compartido - Caval Studio

## 🏠 **Configuración para tu hosting actual**

Basándome en tu `.gitlab-ci.yml`, veo que usas hosting compartido. Aquí está la integración correcta:

### 1. **Estructura de directorios en el servidor**

```
/home2/avilacaf/public_html/cavalstudio.com/
├── public/                    # Tu Symfony actual
│   ├── index.php
│   ├── assets/
│   └── ...
├── blog/                      # WordPress aquí
│   ├── wp-admin/
│   ├── wp-content/
│   │   └── themes/
│   │       └── cavalstudio-blog/  # Nuestro tema
│   ├── wp-config.php
│   └── ...
├── src/
├── templates/
└── ...
```

### 2. **Pasos de instalación**

#### Paso 1: Subir WordPress al servidor
```bash
# En tu servidor, crear directorio blog
mkdir /home2/avilacaf/public_html/cavalstudio.com/blog

# Descargar WordPress
cd /home2/avilacaf/public_html/cavalstudio.com/blog
wget https://wordpress.org/latest.tar.gz
tar -xzf latest.tar.gz --strip-components=1
rm latest.tar.gz
```

#### Paso 2: Configurar base de datos
- Crear nueva base de datos en cPanel: `avilacaf_blog`
- Usuario: `avilacaf_bloguser`
- Contraseña: generar una segura

#### Paso 3: Configurar wp-config.php
```php
<?php
define('DB_NAME', 'avilacaf_blog');
define('DB_USER', 'avilacaf_bloguser');
define('DB_PASSWORD', 'tu_password_segura');
define('DB_HOST', 'localhost');

// URLs para subdirectorio
define('WP_HOME', 'https://cavalstudio.com/blog');
define('WP_SITEURL', 'https://cavalstudio.com/blog');

// Configuración de seguridad
define('WP_DEBUG', false);
define('WP_DEBUG_LOG', false);
define('WP_DEBUG_DISPLAY', false);

// Claves de seguridad (generar en https://api.wordpress.org/secret-key/1.1/salt/)
define('AUTH_KEY', 'tu-clave-unica-aqui');
// ... resto de claves

$table_prefix = 'wp_';

if (!defined('ABSPATH')) {
    define('ABSPATH', __DIR__ . '/');
}
require_once ABSPATH . 'wp-settings.php';
?>
```

### 3. **Configurar .htaccess en blog/**

```apache
# WordPress SEO-friendly URLs
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /blog/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /blog/index.php [L]
</IfModule>

# Seguridad
<files wp-config.php>
order allow,deny
deny from all
</files>
```

### 4. **Actualizar tu pipeline de GitLab**

Agrega después del paso de despliegue:

```yaml
# 8. Subir tema de WordPress si hay cambios
- sshpass -p "$SSH_PASSWORD" scp -r -P 4297 blog-theme/ avilacaf@204.13.239.170:/home2/avilacaf/public_html/cavalstudio.com/blog/wp-content/themes/cavalstudio-blog/
```

### 5. **Modificar el tema para hosting compartido**

En `blog-theme/functions.php`, cambiar las URLs:

```php
function get_symfony_header() {
    $symfony_url = 'https://cavalstudio.com';
    $header_url = $symfony_url . '/api/header';
    
    // Usar file_get_contents en lugar de cURL
    $context = stream_context_create([
        'http' => [
            'timeout' => 5,
            'method' => 'GET'
        ]
    ]);
    
    $header_html = @file_get_contents($header_url, false, $context);
    
    if ($header_html) {
        return $header_html;
    }
    
    return get_fallback_header();
}

function get_symfony_footer() {
    $symfony_url = 'https://cavalstudio.com';
    $footer_url = $symfony_url . '/api/footer';
    
    $context = stream_context_create([
        'http' => [
            'timeout' => 5,
            'method' => 'GET'
        ]
    ]);
    
    $footer_html = @file_get_contents($footer_url, false, $context);
    
    if ($footer_html) {
        return $footer_html;
    }
    
    return get_fallback_footer();
}
```

### 6. **Configuración de permalinks**

En WordPress admin:
- Ir a Ajustes > Enlaces permanentes
- Seleccionar "Nombre de la entrada"
- Guardar cambios

### 7. **Configuración de URLs**

En WordPress admin > Ajustes > Generales:
- **Dirección de WordPress (URL)**: `https://cavalstudio.com/blog`
- **Dirección del sitio (URL)**: `https://cavalstudio.com/blog`

## 🚀 **Script de instalación automática**

Crea este script para automatizar la instalación:

```bash
#!/bin/bash
# install-blog.sh

echo "🚀 Instalando WordPress para Caval Studio..."

# Variables
DOMAIN="cavalstudio.com"
BLOG_DIR="/home2/avilacaf/public_html/cavalstudio.com/blog"
DB_NAME="avilacaf_blog"
DB_USER="avilacaf_bloguser"

# 1. Crear directorio
mkdir -p $BLOG_DIR
cd $BLOG_DIR

# 2. Descargar WordPress
echo "📥 Descargando WordPress..."
wget https://wordpress.org/latest.tar.gz
tar -xzf latest.tar.gz --strip-components=1
rm latest.tar.gz

# 3. Configurar permisos
chmod 755 $BLOG_DIR
chmod 644 $BLOG_DIR/wp-config.php

# 4. Subir tema personalizado
echo "🎨 Instalando tema personalizado..."
cp -r /path/to/blog-theme $BLOG_DIR/wp-content/themes/cavalstudio-blog

echo "✅ WordPress instalado. Visita https://$DOMAIN/blog/wp-admin para completar la configuración."
```

## 📱 **URLs finales**

- **Blog**: `https://cavalstudio.com/blog`
- **Admin**: `https://cavalstudio.com/blog/wp-admin`
- **API Header**: `https://cavalstudio.com/api/header`
- **API Footer**: `https://cavalstudio.com/api/footer`

## 🔧 **Mantenimiento con GitLab CI**

Actualiza tu `.gitlab-ci.yml`:

```yaml
# Agregar después del paso 7
# 8. Sincronizar tema de WordPress
- sshpass -p "$SSH_PASSWORD" ssh -p 4297 avilacaf@204.13.239.170 "
  if [ -d /home2/avilacaf/public_html/cavalstudio.com/blog/wp-content/themes/cavalstudio-blog ]; then
    rm -rf /home2/avilacaf/public_html/cavalstudio.com/blog/wp-content/themes/cavalstudio-blog;
  fi"
- sshpass -p "$SSH_PASSWORD" scp -r -P 4297 blog-theme/ avilacaf@204.13.239.170:/home2/avilacaf/public_html/cavalstudio.com/blog/wp-content/themes/cavalstudio-blog/
```

## 🛡️ **Seguridad adicional**

En el directorio blog/, crear `.htaccess`:

```apache
# Bloquear acceso a archivos sensibles
<files wp-config.php>
order allow,deny
deny from all
</files>

<files .htaccess>
order allow,deny
deny from all
</files>

# Bloquear ejecución de PHP en uploads
<Directory "wp-content/uploads">
    <Files "*.php">
        Order Deny,Allow
        Deny from all
    </Files>
</Directory>
```

---

**¿Quieres que proceda con esta configuración para hosting compartido?** Es mucho más simple que Docker y se adapta perfectamente a tu infraestructura actual. 