Welcome to the Treehouse Community
Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.
Looking to learn something new?
Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.
Start your free trialLiam Maclachlan
22,805 PointsQuick edit is deleting my linked CPT. Any ideas on stopping this?
I'm creating a custompost (audit) that keeps a track of all interactions with a post. This works absolutely fine when all interactions go through the edit.php screen.
When the quick edit is used, the audit is deleted. Not sent to the trash; it is competely removed from the face of the earth.
Any ideas?
Code below:
<?php
function sliced_main_aduit_func( $post_id) {
## verify if this is an auto save routine.
## If it is our form has not been submitted, so we dont want to do anything
if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) return;
if ( get_post_status( $post_id ) == 'auto-draft' ) return;
if ( wp_is_post_revision( $post_id ) ) return;
## Get the post object
$the_post = get_post( $post_id );
## If the saved post type is Page, run main audit log function
if ( $the_post->post_type == 'page' && current_user_can( 'edit_pages' ) ) :
## Unhooked to avoid an infinite save loop when Audit is saved
remove_action('save_post', 'sliced_on_save_audit_trail');
## initialise the main array to hold the Audit posts information
$initialPostInfo = array();
## If page already has an audit, apply the Audi_ID to update the correct audit trail
if ( $audit_id = get_post_meta( $post_id, 'audit_id', true ) ) :
$initialPostInfo['ID'] = $audit_id;
$initialPostInfo['post_content'] = $the_post->post_content . ' > ' . $audit_id;
else :
## CPT added if audit for page does not already exists, otherwise the Audit_ID is used to update correct audit
$initialPostInfo['post_type'] = 'sliced_audit_cpt'; // post type to save to
$initialPostInfo['post_content'] = 'First commit';
endif;
## General Audit post informaiton
$initialPostInfo['post_title'] = $the_post->post_title; // The title of your post.
$initialPostInfo['post_status'] = 'publish';
## Create the new post and apply the ID to a variable, at the same time
$newPost = wp_insert_post( $initialPostInfo, true );
## If no error was returned from the new post creation, and the newly created audits posts ID as a custom field to the original pages meta
if ( !$wp_error ) :
update_post_meta( $post_id, 'audit_id', $newPost );
endif;
## re-hook the save post to allow the audit trail to continue on next submission
add_action('save_post', 'sliced_on_save_audit_trail');
endif;
return $post_id;
}
add_action( 'save_post', 'sliced_main_aduit_func' );
?>
2 Answers
Liam Maclachlan
22,805 PointsSorted! Moved the line:
<?php
$initialPostInfo['post_type'] = 'sliced_audit_cpt'; // post type to save to
?>
outside of the conditinal it was in and it resolved it. If anyone can explain this, I will happily give them the 'Best Answer' status for this post :)
Cena Mayo
55,236 PointsHi Liam,
This may not answer your question, but if I'm understanding you correctly, attempting to edit CPT from the quick edit screen sends the edit to the ether. You might take a look here: Understanding the WordPress Quick Edit Custom Box - it appears to touch on what you're asking (and despite the 2012 date, still relevant.) It sounds like making edits through the QE screen is more complicated than it appears.
Best, Cena
Liam Maclachlan
22,805 PointsHi Cena.
Really, albeit confusing, great article :) I have bookmarked it for when I need to edit/add to the quick-edits.