<?php
if (!defined('ABSPATH')) exit;
// =========================================================================
// CUSTOM POST TYPE: Property
// =========================================================================
function custom_post_type_property() {
$labels = array(
'name' => _x('Properties', 'Post Type General Name', 'wpflames'),
'singular_name' => _x('Property', 'Post Type Singular Name', 'wpflames'),
'menu_name' => __('Properties', 'wpflames'),
'all_items' => __('All Properties', 'wpflames'),
'view_item' => __('View Property', 'wpflames'),
'add_new_item' => __('Add New Property', 'wpflames'),
'add_new' => __('Add New', 'wpflames'),
'edit_item' => __('Edit Property', 'wpflames'),
'update_item' => __('Update Property', 'wpflames'),
'search_items' => __('Search Properties', 'wpflames'),
'not_found' => __('No Properties found', 'wpflames'),
'not_found_in_trash' => __('No Properties found in Trash', 'wpflames'),
'parent_item_colon' => __('Parent Property:', 'wpflames'),
);
$args = array(
'label' => __('property', 'wpflames'),
'description' => __('Properties', 'wpflames'),
'labels' => $labels,
'supports' => array(
'title',
),
'hierarchical' => true,
'public' => true,
'show_ui' => true,
'show_in_menu' => true,
'show_in_nav_menus' => true,
'show_in_admin_bar' => true,
'menu_position' => 5,
'menu_icon' => 'dashicons-admin-multisite',
'can_export' => true,
'has_archive' => false,
'exclude_from_search' => false,
'publicly_queryable' => true,
'show_in_rest' => true,
'show_in_graphql' => true,
'graphql_single_name' => 'Property',
'graphql_plural_name' => 'Properties',
'capability_type' => 'page',
'rewrite' => array(
'slug' => 'property',
'hierarchical' => true,
'with_front' => false,
),
);
register_post_type('property', $args);
}
add_action('init', 'custom_post_type_property', 0);
Headless
NextJS
npm install next@latest react@latest react-dom@latest
npm run dev
Gatsby clean
A gatsby clean parancs a Gatsby projektben a cache és a generált fájlok törlésére szolgál. Konkrétan a következőket teszi:
1. Törli a cache-t
- A Gatsby által generált
.cachekönyvtár tartalmát törli. - Ez a könyvtár a build folyamat során létrehozott átmeneti adatokat tartalmazza (pl. GraphQL lekérdezések eredményei, képgenerálási adatok).
- Ha ez a cache megsérül vagy elavult, előfordulhatnak hibák vagy nem kívánt viselkedések. A
gatsby cleansegít ezeket megoldani.
2. Törli a public mappát
- Az összesített build fájlokat tartalmazó
publickönyvtárat is törli. - Ez a mappa a kész weboldal statikus fájljait (HTML, CSS, JS, képek) tartalmazza, amelyeket a build folyamat során hoz létre a Gatsby.
3. Új build alapok
- A következő build teljesen tiszta környezetben történik, újraépítve minden fájlt és adatot.
- Ez különösen akkor hasznos, ha váratlan viselkedést tapasztalsz, például helytelenül renderelt komponenseket vagy elavult adatokat.
Mikor érdemes futtatni?
- Cache probléma gyanúja esetén: Ha olyan hibát tapasztalsz, amely látszólag nem a kód változásai miatt következik be.
- Új függőségek vagy pluginok hozzáadása után: Ha új függőséget vagy Gatsby plugint adsz a projektedhez, és az nem működik megfelelően.
- Deploy hibák elkerülése érdekében: Ha biztos akarsz lenni abban, hogy a build folyamat teljesen tiszta.
Hogyan használod?
Egyszerűen futtasd a következő parancsot a terminálban a projekt gyökérkönyvtárában:
gatsby clean
Utána
A gatsby clean után általában új buildet kell indítani:
gatsby develop
vagy
gatsby build
Ez biztosítja, hogy a törölt fájlokat és cache-t újra generálja a Gatsby.
Display Cover – Gatsby
gatsby-node.js
const path = require("path");
const { assignIds } = require("@webdeveducation/wp-block-tools");
exports.createPages = async ({ actions, graphql }) => {
const pageTemplate = path.resolve("src/templates/page.js");
const { createPage } = actions;
const { data } = await graphql(`
query AllPagesQuery {
allWpPage {
nodes {
databaseId
blocks
uri
}
}
}
`);
for (let i = 0; i < data.allWpPage.nodes.length; i++) {
const page = data.allWpPage.nodes[i];
let blocks = page.blocks;
blocks = assignIds(blocks);
createPage({
path: page.uri,
component: pageTemplate,
context: {
blocks,
},
});
}
};
page.js
import React from "react";
import { BlockRendererProvider } from "@webdeveducation/wp-block-tools";
const Page = (props) => {
console.log("Page props: ", props);
return <BlockRendererProvider allBlocks={props.pageContext.blocks} />;
};
export default Page;
Display props – Gatsby
gatsby-node.js
const path = require("path");
exports.createPages = async ({ actions, graphql }) => {
const pageTemplate = path.resolve("src/templates/page.js");
const { createPage } = actions;
const { data } = await graphql(`
query AllPagesQuery {
allWpPage {
nodes {
databaseId
blocks
uri
}
}
}
`);
for (let i = 0; i < data.allWpPage.nodes.length; i++) {
const page = data.allWpPage.nodes[i];
let blocks = page.blocks;
createPage({
path: page.uri,
component: pageTemplate,
context: {
blocks,
},
});
}
};
src/templates/page.js
import React from "react";
const Page = (props) => {
console.log("Page props: ", props);
return (
<div>
<p>This is page template</p>
</div>
);
};
export default Page;
Display Title – Gatsby
gatsby-node.js
const path = require("path");
exports.createPages = async ({ actions, graphql }) => {
const pageTemplate = path.resolve("src/templates/page.js");
const { createPage } = actions;
const { data } = await graphql(`
query AllPagesQuery {
allWpPage {
nodes {
databaseId
title
blocks
uri
}
}
}
`);
for (let i = 0; i < data.allWpPage.nodes.length; i++) {
const page = data.allWpPage.nodes[i];
createPage({
path: page.uri,
component: pageTemplate,
context: {
title: page.title,
},
});
}
};
src/templates/page.js
import React from "react";
const Page = ({ pageContext }) => {
const { title } = pageContext;
return (
<div>
<h1>{title}</h1>
<p>This is page template</p>
</div>
);
};
export default Page;
Headless WordPress – Gatsby
Create a new Gatsby project
npx gatsby new headless-gatsby https://github.com/tomphill/gatsby-wordpress-gutenberg-starter
Set the endpoint in .env
WPGRAPHQL_URL = http://headless-wp-gatsby.local/graphql
Install Gatsby-CLI globally
sudo npm i -g gatsby-cli
Run
gatsby develop
Clear cache
gatsby clean