Ссылки на главную страницу Gatsby JS & WP REST API Меню - PullRequest
1 голос
/ 14 марта 2020

Каждый раз, когда я пытаюсь сделать ссылку на мою главную страницу в моей сборке Gatsby, она сопровождается слагом объекта, который создает неправильную ссылку в моем меню. Я настроил сайт на использование передней страницы stati c в моих настройках WordPress, чтобы на главной странице вообще не было слагов.

На данный момент ссылка на главной странице в моем меню - это тестовая страница. local / frontpage, что неправильно, так как не должно быть слизняков. Я попытался использовать прямой url вместо object_slug, но затем ссылка testpage.local / testpage.local /

Я также попытался создать элемент меню - это пользовательская ссылка, но, поскольку она ссылается на "/", она получает тот же object_slug (frontpage).

Следовательно, как я могу использовать object_slug, но сообщая WordPress, что на моей главной странице нет слагов?

Используемый мной запрос:

{
  allWordpressWpApiMenusMenusItems {
    edges {
      node {
        items {
          title
          object_slug
          url

        }
      }
    }
  }
}

Это возвращает

{
  "data": {
    "allWordpressWpApiMenusMenusItems": {
      "edges": [
        {
          "node": {
            "items": [
              {
                "title": "Frontpage",
                "object_slug": "frontpage",
                "url": "/"
              },
              {
                "title": "Dummy page",
                "object_slug": "dummy-page",
                "url": "http://testpage.local/dummy-page/"
              }
            ]
          }
        }
      ]
    }
  }
}

создание меню:

const MainMenu = () => (
  <StaticQuery query={graphql`{
        allWordpressWpApiMenusMenusItems {
          edges {
            node {
              items {
                title
                object_slug
                url
              }
            }
          }
        }
      }
      `} render={props => (
      <div>
        {props.allWordpressWpApiMenusMenusItems.edges[0].node.items.map(item => (
          <Link to={item.object_slug} key={item.title}>
            {item.title}
          </Link>
        ))}
      </div>
    )} />
);

export default MainMenu;

Ответы [ 2 ]

0 голосов
/ 31 марта 2020

Я столкнулся с той же проблемой. Решением для меня было поменять replacementUrl: "".

{
  resolve: "gatsby-source-wordpress",
  options: {
    // your config...
    searchAndReplaceContentUrls: {
    sourceUrl: "https://example.com", // WordPress URL
    replacementUrl: "", // Gatsby URL
    ,
  },
}
0 голосов
/ 14 марта 2020

Вот что сработало для меня:

Используйте item.url вместо item.object_slug

{props.allWordpressWpApiMenusMenusItems.edges[0].node.items.map(item => (
  <Link to={item.url} key={item.title}>
    {item.title}
  </Link>
))}

Затем вам нужно установить gatsby-source-wordpress если вы еще этого не сделали.

Наконец, добавьте это к своему gatsby-config.js

{
  resolve: "gatsby-source-wordpress",
  options: {
    // your config...
    searchAndReplaceContentUrls: {
    sourceUrl: "https://example.com", // WordPress URL
    replacementUrl: "http://localhost:3000", // Gatsby URL
    ,
  },
}
...