链接到首页 GatsbyJS 和 WP REST API 菜单
Linking to front page GatsbyJS & WP REST API Menus
每次我尝试 link 到我的 Gatsby 构建的首页时,它都会附带一个对象 slug,它会在我的菜单中创建错误的 link。我已经在我的 WordPress 设置中将网站设置为使用静态首页,因此首页根本不应该有一个 slug。
目前我菜单中的首页 link 是 testpage。local/frontpage 这是错误的,因为应该没有 slug。我试过直接使用 url 而不是 object_slug 但是 link 是测试页。local/testpage.local/
我也曾尝试创建自定义的菜单项 link,但由于它 linking 到“/”,它得到相同的 object_slug(首页)。
因此,我如何使用 object_slug 但告诉 WordPress 我的首页没有任何 slug?
我正在使用的查询:
{
allWordpressWpApiMenusMenusItems {
edges {
node {
items {
title
object_slug
url
}
}
}
}
}
这个returns
{
"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;
以下是对我有用的方法:
使用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
,
},
}
我遇到了同样的问题。我的解决方案是更改 replacementUrl: ""
.
{
resolve: "gatsby-source-wordpress",
options: {
// your config...
searchAndReplaceContentUrls: {
sourceUrl: "https://example.com", // WordPress URL
replacementUrl: "", // Gatsby URL
,
},
}
每次我尝试 link 到我的 Gatsby 构建的首页时,它都会附带一个对象 slug,它会在我的菜单中创建错误的 link。我已经在我的 WordPress 设置中将网站设置为使用静态首页,因此首页根本不应该有一个 slug。
目前我菜单中的首页 link 是 testpage。local/frontpage 这是错误的,因为应该没有 slug。我试过直接使用 url 而不是 object_slug 但是 link 是测试页。local/testpage.local/
我也曾尝试创建自定义的菜单项 link,但由于它 linking 到“/”,它得到相同的 object_slug(首页)。
因此,我如何使用 object_slug 但告诉 WordPress 我的首页没有任何 slug?
我正在使用的查询:
{
allWordpressWpApiMenusMenusItems {
edges {
node {
items {
title
object_slug
url
}
}
}
}
}
这个returns
{
"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;
以下是对我有用的方法:
使用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
,
},
}
我遇到了同样的问题。我的解决方案是更改 replacementUrl: ""
.
{
resolve: "gatsby-source-wordpress",
options: {
// your config...
searchAndReplaceContentUrls: {
sourceUrl: "https://example.com", // WordPress URL
replacementUrl: "", // Gatsby URL
,
},
}