Home › Forums › Backend Issues (wp-admin) › create post within acf block › Reply To: create post within acf block
I don’t think it’s worth the effort but in theory it may be possible..
1. Extend ACF Block with a JavaScript Interface
You would need to enhance your ACF block with JavaScript (likely using React if you are using the latest WordPress editor, Gutenberg) to include a user interface element, such as a button, for adding new ‘cassette_card’ posts.
2. Use WordPress REST API
Leverage the WordPress REST API to create new posts. You’d need to ensure that your custom post type ‘cassette_card’ is exposed to the REST API with the appropriate arguments set in the register_post_type()
function, like so:
register_post_type('cassette_card', [
'public' => true,
'show_in_rest' => true,
// Other necessary arguments...
]);
3. JavaScript to Handle Post Creation
Within your block’s JavaScript, add a function that handles the creation of new ‘cassette_card’ posts. This function would use the WordPress REST API to create a new post asynchronously. Here’s a basic example using fetch API:
function createCassetteCard(title, content) {
const postData = {
title: title,
content: content,
status: 'publish', // Or 'draft' depending on your needs
};
fetch('/wp-json/wp/v2/cassette_card', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-WP-Nonce': wpApiSettings.nonce // nonce for verification
},
body: JSON.stringify(postData)
})
.then(response => response.json())
.then(post => {
console.log('New cassette card created:', post);
// Handle the newly created post (e.g., adding to a select dropdown)
})
.catch(error => console.error('Error:', error));
}
4. Authentication and Security
Ensure that proper authentication (like nonce checks) and capability checks are implemented to secure the post creation process. The X-WP-Nonce
header in the fetch API call above is crucial for security.
5. Update the Editor Interface
After a post is successfully created, you’ll need to update the editor’s interface to include the new post. This might mean refreshing a dropdown or a list component that lets you pick ‘cassette_card’ posts.
6. Enqueue Scripts and Localize
Make sure your JavaScript is properly enqueued and localized in your plugin or theme’s functions file to ensure it has access to WordPress core functionality like wpApiSettings.nonce
.
None of this is tested and may not even work. Maybe this will help though.
Welcome to the Advanced Custom Fields community forum.
Browse through ideas, snippets of code, questions and answers between fellow ACF users
Helping others is a great way to earn karma, gain badges and help ACF development!
We use cookies to offer you a better browsing experience, analyze site traffic and personalize content. Read about how we use cookies and how you can control them in our Privacy Policy. If you continue to use this site, you consent to our use of cookies.