WordPress 4.8 en la API REST de Docker no accesible

3 minutos de lectura

Así que recientemente instalé WordPress usando Docker, que es un archivo de redacción sencillo para completar los espacios en blanco de Docker docs (https://docs.docker.com/compose/wordpress/).

version: '3'

services:
  db:
    image: mysql:5.7
    volumes:
      - db_data:/var/lib/mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: 
      MYSQL_DATABASE: 
      MYSQL_USER: 
      MYSQL_PASSWORD: 

  wordpress:
    depends_on:
      - db
    image: wordpress:latest
    ports:
      - "8000:80"
    restart: always
    environment:
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_USER: 
      WORDPRESS_DB_PASSWORD: 
volumes:
    db_data:

Está funcionando. Esa parte está bien, pero cuando me dirijo a http://siteurl/wp-json Recibo un 404. El sitio funciona bien, pero no se puede acceder a la API REST. Tengo otro sitio que se ejecuta en WAMP y cuando llegué a esa dirección aparece:

{
  "name": "localhost:8090",
  "description": "Just another WordPress site",
  "url": "http://localhost:8090/wordpress",
  "home": "http://localhost:8090/wordpress",
  "gmt_offset": "0",
  "timezone_string": "",
  "namespaces": [
    "oembed/1.0",
    "wp/v2"
  ],
  ...

Ambos sitios están ejecutando 4.8. ¿Cómo accedo a la API REST cuando ejecuto WordPress en Docker? Por lo general, desarrollo localmente usando Docker y no recuerdo que esto sea un problema.

(Como nota al margen, abrí un contenedor de WordPress que publica Bitnami y no tuve problemas para obtener la respuesta adecuada. Entonces, ¿este es un problema con la… imagen oficial de WordPress? ¿Quizás la pila subyacente para la imagen? Puedo usar pero me gustaría mucho, mucho, mucho saber cuál es el problema porque he estado viendo surgir un problema similar para mis compañeros desarrolladores)

  • Tengo el mismo problema con 4.8 NO en un contenedor acoplable.

    – Nick Palmer

    13 de julio de 2017 a las 21:32

  • @NickPalmer Creo que encontré la respuesta (publicada a continuación). Espero que eso ayude.

    – BrandonTom

    14 de julio de 2017 a las 14:18

avatar de usuario
brandon tom

Resulta que esto tiene que ver con la configuración de enlace permanente para su sitio. los /wp-json/wp/v2 El punto final está disponible cuando configura su sitio para usar la configuración de enlace permanente personalizado. si uso el /%post%/ permalink estructura funciona. Hay una ruta alternativa para los sitios que usan otras estructuras de enlaces permanentes:

En sitios sin bonitos enlaces permanentes, la ruta se agrega a la URL como el parámetro rest_route. Para el ejemplo anterior, la URL completa sería entonces http://ejemplo.com/?rest_route=/wp/v2/posts/123

Fuente: https://developer.wordpress.org/rest-api/extending-the-rest-api/routes-and-endpoints/

de hecho el ?rest_route=/wp/v2/posts parece funcionar siempre, por lo que es la opción más confiable.

  • Así que arreglé esto en mi instalación configurando .htaccess y activando mod_rewrite en httpd.conf y reiniciando apache.

    – Nick Palmer

    18 de julio de 2017 a las 6:39

  • Hola, @NickPalmer, estoy interesado en solucionar este problema a tu manera, pero nunca he configurado Apache antes. ¿Le importaría compartir sus cambios conmigo?

    – alex bennett

    6 de junio de 2018 a las 1:50

  • con su solución hice que funcionara … pero no puedo acceder a los puntos finales de complementos personalizados

    – Carlos.V

    18 de mayo de 2019 a las 5:27

Ejecuté Docker y enfrenté el mismo problema, la solución fue: en AdminPanal => Configuración -> Enlaces permanentes -> cambiar de ‘predeterminado’ a ‘Nombre de la publicación’

  • Bonitos enlaces permanentes en Configuración > Enlaces permanentes para que los puntos finales personalizados sean compatibles. ===> Los enlaces permanentes predeterminados no funcionarán.

    – M_Badrah

    26 de mayo de 2020 a las 14:59


¿Ha sido útil esta solución?