WordPress-Daten abfragenMenu
Menu
Hier sind einige Beispiele für queries zum Abrufen von Menüdaten.
Menüs abrufen
Ein bestimmtes Menü und die Rohdaten seiner Einträge abrufen:
{
menu(by: { id: 176 }) {
itemDataEntries
}
}Menüelement-Eigenschaften über include oder exclude filtern:
{
menu(by: { id: 176 }) {
itemDataEntries(propertiesBy: { exclude: ["localURLPath", "rawLabel"] })
}
}Alle Menüs abrufen und queries verschachteln, um die Eigenschaften der Elemente auszuwählen:
{
menus {
id
name
slug
count
locations
items {
...MenuItemData
children {
...MenuItemData
children {
...MenuItemData
}
}
}
}
}
fragment MenuItemData on MenuItem {
id
itemType
objectType
objectID
parentID
localURLPath
label
rawLabel
titleAttribute
url
cssClasses
target
description
linkRelationship
}Menüs filtern und paginieren:
{
menus(pagination: { limit: 1, offset: 1}, filter: { search: "all" }) {
id
name
slug
}
menuCount(filter: { search: "all" })
}Menüs erstellen
Nur Admin-Benutzer (oder solche mit der Berechtigung edit_theme_options) können Menüs erstellen oder aktualisieren.
mutation CreateMenu {
createMenu(input: {
name: "Header menu"
locations: ["header"]
itemsBy: { json: [
{
label: "Custom parent (nested)",
itemType: custom,
url: "https://www.example.com/parent",
titleAttribute: "Parent title attribute",
description: "Parent menu item description",
cssClasses: ["menu-item", "menu-item-parent"],
target: "_blank",
linkRelationship: "nofollow",
children: [
{
label: "Custom child",
itemType: custom,
url: "https://www.example.com/parent/child",
description: "Child menu item description",
cssClasses: ["menu-item", "menu-item-child"],
target: "_self",
linkRelationship: "follow"
},
{
label: "Page child",
itemType: post_type,
objectType: "page",
objectID: 2,
titleAttribute: "Go to sample page",
description: "Page child description",
cssClasses: ["menu-item", "menu-item-page"],
target: "_blank",
linkRelationship: "nofollow"
},
{
label: "Category child",
itemType: taxonomy,
objectType: "category",
objectID: 3
}
]
},
{
label: "Root page item",
itemType: post_type,
objectType: "page",
objectID: 2
},
{
label: "Root category item",
itemType: taxonomy,
objectType: "category",
objectID: 5
},
{
label: "Custom root item",
itemType: custom,
url: "https://www.example.com/2",
description: "Custom root item description",
cssClasses: ["menu-item", "menu-item-root"],
target: "_self",
linkRelationship: "follow",
children: [
{
label: "Custom grandchild",
itemType: custom,
url: "https://www.example.com/2/grandchild",
description: "Custom grandchild description",
cssClasses: ["menu-item", "menu-item-grandchild"],
target: "_blank",
linkRelationship: "nofollow"
}
]
}
] }
}) {
status
errors {
__typename
...on ErrorPayload {
message
}
}
menu {
id
name
slug
count
locations
itemDataEntries
items {
...MenuItemData
children {
...MenuItemData
children {
...MenuItemData
children {
...MenuItemData
}
}
}
}
}
}
}
fragment MenuItemData on MenuItem {
id
itemType
objectType
objectID
parentID
localURLPath
label
rawLabel
titleAttribute
url
cssClasses
target
description
linkRelationship
}Menüs aktualisieren
Die Menüpositionen aktualisieren:
mutation UpdateMenu {
updateMenu(input: {
id: 176
locations: ["footer", "footer-mobile"]
}) {
status
errors {
__typename
...on ErrorPayload {
message
}
}
menu {
id
locations
}
}
}Diese query verwendet verschachtelte Mutationen, um den Namen des Menüs zu aktualisieren:
mutation {
menu(by: { id: 176 }) {
originalName: name
update(input: {
name: "Mobile header menu"
}) {
status
errors {
__typename
...on ErrorPayload {
message
}
}
menu {
newName: name
}
}
}
}Prev
Next