Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save hawkidoki/6b35de0712e3e623054ddec7edaed460 to your computer and use it in GitHub Desktop.
Save hawkidoki/6b35de0712e3e623054ddec7edaed460 to your computer and use it in GitHub Desktop.
<?php
// Post Type Subpages: Saubegarde d'un post
add_action('save_post', 'hwk_ptsp_save_post', 10, 2);
function hwk_ptsp_save_post($post_id, $post){
if(!$post_type = hwk_ptsp_get_post_type($post->post_type))
return;
// Aucun Meta Parent: Création du meta par défaut
if(!get_post_meta($post_id, $post_type['meta_prefix'] . 'parent', true))
update_post_meta($post_id, $post_type['meta_prefix'] . 'parent', get_post_field('post_name', $post_id));
// Aucun Meta Page: Création des metas par défaut
foreach($post_type['pages'] as $page){
if( !get_post_meta($post_id, $post_type['meta_prefix'] . $page['name'], true) && hwk_ptsp_page_has_rewrite($page) )
update_post_meta($post_id, $post_type['meta_prefix'] . $page['name'], get_post_field('post_name', $post_id));
}
// Meta Parent: Sanitize & Update du post->name
if( ($new_slug = get_post_meta($post_id, $post_type['meta_prefix'] . 'parent', true)) && $new_slug != $post->post_name){
$new_slug = sanitize_title($new_slug);
wp_update_post(array(
'ID' => $post_id,
'post_name' => $new_slug
));
}
}
// Post Type Subpages: Mise à jour d'un post_meta
add_action('added_post_meta', 'hwk_ptsp_update_meta', 10, 4);
add_action('updated_post_meta', 'hwk_ptsp_update_meta', 10, 4);
function hwk_ptsp_update_meta($meta_id, $post_id, $meta_key, $meta_value){
if(!$post_type = hwk_ptsp_get_post_type(get_post_type($post_id)))
return;
// Meta Parent: Sanitize & Update du post->name
if($meta_key == $post_type['meta_prefix'] . 'parent'){
$new_slug = sanitize_title($meta_value);
update_post_meta($post_id, $post_type['meta_prefix'] . 'parent', $new_slug);
return wp_update_post(array(
'ID' => $post_id,
'post_name' => $new_slug
));
}
foreach($post_type['pages'] as $page){
if($meta_key != $post_type['meta_prefix'] . $page['name'])
continue;
// Meta Page: Sanitize & Update
return update_post_meta($post_id, $post_type['meta_prefix'] . $page['name'], sanitize_title($meta_value));
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment