wip prevent post publish if wrong coordinates
This commit is contained in:
@@ -138,18 +138,131 @@ add_shortcode('lejourduprof_map', 'mp_add_div');
|
||||
|
||||
|
||||
/**
|
||||
* when a post is published, check its coordinates
|
||||
* when a post is saved or published or updated,
|
||||
* find its coordinates
|
||||
*/
|
||||
function post_published_coordinates($id, $post) {
|
||||
$coordinates_valid = true;
|
||||
$coordinates = mp_get_coordinates($id, $coordinates_valid);
|
||||
|
||||
if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE )
|
||||
return;
|
||||
|
||||
if ( !isset( $_POST['ep_eventposts_nonce'] ) )
|
||||
return;
|
||||
|
||||
if ( !wp_verify_nonce( $_POST['ep_eventposts_nonce'], plugin_basename( __FILE__ ) ) )
|
||||
return;
|
||||
|
||||
// Is the user allowed to edit the post or page?
|
||||
if ( !current_user_can( 'edit_post', $post->ID ) )
|
||||
return;
|
||||
|
||||
$coordinates = mp_get_coordinates($id);
|
||||
|
||||
if ( ! add_post_meta( $id, 'coordinates', $coordinates, true ) )
|
||||
update_post_meta( $id, 'coordinates', $coordinates );
|
||||
|
||||
if ( ! add_post_meta( $id, 'coordinates_valid', $coordinates_valid, true ) )
|
||||
update_post_meta( $id, 'coordinates_valid', $coordinates_valid );
|
||||
}
|
||||
add_action( 'publish_post', 'post_published_coordinates', 10, 2 );
|
||||
add_action( 'save_post', 'post_published_coordinates', 10, 2 );
|
||||
|
||||
|
||||
|
||||
|
||||
// https://wordpress.stackexchange.com/questions/42013/prevent-post-from-being-published-if-custom-fields-not-filled
|
||||
// https://developer.wordpress.org/reference/hooks/save_post/
|
||||
function test1($id, $post, $update) {
|
||||
|
||||
// is doing autosaving ?
|
||||
if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE )
|
||||
return;
|
||||
|
||||
// is post creation ?
|
||||
if (!$update)
|
||||
return;
|
||||
|
||||
// is the user allowed to edit the post or page ?
|
||||
if ( !current_user_can( 'edit_post', $id ) )
|
||||
return;
|
||||
|
||||
// is not being published ?
|
||||
if ($post->post_status != "publish")
|
||||
return;
|
||||
|
||||
$prevent_publish= true; // set to true if data was invalid
|
||||
if ($prevent_publish) {
|
||||
|
||||
echo '<div class="notice notice-warning is-dismissible">
|
||||
<p>my message</p>
|
||||
</div>';
|
||||
|
||||
// unhook this function to prevent indefinite loop
|
||||
remove_action('save_post', 'my_save_post');
|
||||
|
||||
// update the post to change post status
|
||||
wp_update_post(array('ID' => $post_id, 'post_status' => 'draft'));
|
||||
|
||||
// re-hook this function again
|
||||
add_action('save_post', 'my_save_post');
|
||||
}
|
||||
}
|
||||
add_action( 'save_post_post', 'test1', 10, 3);
|
||||
|
||||
function my_notice() {
|
||||
echo '<div class="notice notice-warning is-dismissible">
|
||||
<p>my message</p>
|
||||
</div>';
|
||||
components-notice-list components-editor-notices__pinned
|
||||
}
|
||||
//add_action( 'admin_notices', 'my_notice');
|
||||
|
||||
function my_redirect_location($location,$post_id){
|
||||
|
||||
// if post was published...
|
||||
if (isset($_POST['publish'])){
|
||||
|
||||
// obtain current post status
|
||||
$status = get_post_status( $post_id );
|
||||
|
||||
// the post was 'published', but if it is still a draft, display draft message (10).
|
||||
if($status=='draft')
|
||||
$location = add_query_arg('message', 10, $location);
|
||||
}
|
||||
|
||||
return $location;
|
||||
}
|
||||
//add_filter('redirect_post_location', 'my_redirect_location', 10, 2);
|
||||
|
||||
/*
|
||||
modification rapide, publie -> brouillon : 1 - draft
|
||||
modification rapide, brouillon -> brouillon : 1 - draft
|
||||
modification rapide, brouillon -> publie : 1 - publish
|
||||
add post : 1 - auto-draft
|
||||
modification, publie -> brouillon : 2 - draft
|
||||
modification, brouillon -> brouillon : 2 - draft
|
||||
modification, brouillon -> publie : 2 - publish
|
||||
*/
|
||||
|
||||
//function test2($id, $post) {
|
||||
// mp_console_log("publish_post - " . $post->post_status);
|
||||
//}
|
||||
//add_action( 'publish_post', 'test2', 10, 2 );
|
||||
/*
|
||||
modification rapide, publie -> brouillon : /
|
||||
modification rapide, brouillon -> brouillon : /
|
||||
modification rapide, brouillon -> publie : 1 - publish
|
||||
add post : /
|
||||
modification, publie -> brouillon : /
|
||||
modification, brouillon -> brouillon : /
|
||||
modification, brouillon -> publie : 2 - publish
|
||||
*/
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
//function save_post_coordinates($id, $post) {
|
||||
// mp_console_log("coordinates is null");
|
||||
//}
|
||||
//add_action( 'publish_post', 'post_published_coordinates', 10, 2 );
|
||||
|
||||
?>
|
||||
|
||||
Reference in New Issue
Block a user