mirror of
https://github.com/10h30/ultimatemember.git
synced 2026-07-11 18:56:10 +09:00
- fix for directories
This commit is contained in:
@@ -147,20 +147,37 @@ if ( ! class_exists( 'um\common\CPT' ) ) {
|
||||
* @param string $old_status Old post status
|
||||
* @param object $post Post object
|
||||
*/
|
||||
public function custom_function_on_post_status_change( $new_status, $old_status, $post ) {
|
||||
// a:3:{s:8:"register";i:5;s:5:"login";i:6;s:7:"profile";i:1138;}
|
||||
public function change_default_form( $new_status, $old_status, $post ) {
|
||||
if ( 'um_form' === $post->post_type || 'um_directory' === $post->post_type ) {
|
||||
$post_type = '';
|
||||
$key = '';
|
||||
if ( 'um_form' === $post->post_type ) {
|
||||
$key = 'um_core_forms';
|
||||
$post_type = 'um_form';
|
||||
}
|
||||
if ( 'um_directory' === $post->post_type ) {
|
||||
$key = 'um_core_directories';
|
||||
$post_type = 'um_directory';
|
||||
}
|
||||
$core_ids = get_option( $key, array() );
|
||||
$post_id = $post->ID;
|
||||
|
||||
if ( 'publish' === get_post_status( $post_id ) ) {
|
||||
if ( 'um_form' === $post->post_type ) {
|
||||
$form_id = $post->ID;
|
||||
$core_forms = get_option( 'um_core_forms', array() );
|
||||
if ( 'publish' === get_post_status( $form_id ) ) {
|
||||
$mode = sanitize_key( $_POST['form']['_um_mode'] ); // phpcs:ignore WordPress.Security.NonceVerification -- already verified here
|
||||
if ( empty( $core_forms[ $mode ] ) || 'publish' !== get_post_status( $core_forms[ $mode ] ) ) {
|
||||
$core_forms[ $mode ] = $form_id;
|
||||
}
|
||||
if ( 'um_directory' === $post->post_type ) {
|
||||
$mode = 'members';
|
||||
}
|
||||
if ( empty( $core_ids[ $mode ] ) || 'publish' !== get_post_status( $core_ids[ $mode ] ) ) {
|
||||
$core_ids[ $mode ] = $post_id;
|
||||
|
||||
/**
|
||||
* Filters Ultimate Member default forms ids.
|
||||
*
|
||||
* @param {array} $core_forms Default forms ids.
|
||||
* @param {int} $form_id Deleted form ID.
|
||||
* @param {array} $core_ids Default ids.
|
||||
* @param {int} $post_id Deleted post ID.
|
||||
* @param {string} $key Post type key.
|
||||
*
|
||||
* @return {array} Default forms ids.
|
||||
*
|
||||
@@ -168,41 +185,46 @@ if ( ! class_exists( 'um\common\CPT' ) ) {
|
||||
* @hook um_default_forms_ids_on_create
|
||||
*
|
||||
* @example <caption>Set default profile form ID as 1.</caption>
|
||||
* function my_um_default_forms_ids_on_create( $core_forms, $form_id ) {
|
||||
* function my_um_default_forms_ids_on_create( $core_forms, $form_id, $key ) {
|
||||
* // your code here
|
||||
* $core_forms['profile'] = 1;
|
||||
* return $core_forms;
|
||||
* }
|
||||
* add_filter( 'um_default_forms_ids_on_create', 'my_um_default_forms_ids_on_create', 10, 2 );
|
||||
* add_filter( 'um_default_forms_ids_on_create', 'my_um_default_forms_ids_on_create', 10, 3 );
|
||||
*/
|
||||
$core_forms = apply_filters( 'um_default_forms_ids_on_create', $core_forms, $form_id );
|
||||
update_option( 'um_core_forms', $core_forms );
|
||||
$core_ids = apply_filters( 'um_default_forms_ids_on_create', $core_ids, $post_id, $key );
|
||||
update_option( $key, $core_ids, $key );
|
||||
}
|
||||
} elseif ( 'trash' === $new_status ) {
|
||||
$mode = get_post_meta( $form_id, '_um_mode', true );
|
||||
if ( isset( $mode ) && absint( $form_id ) === absint( $core_forms[ $mode ] ) ) {
|
||||
$meta_value_mode = get_post_meta( $post_id, '_um_mode', true );
|
||||
$mode = $meta_value_mode;
|
||||
if ( 'um_directory' === $post->post_type ) {
|
||||
$mode = 'members';
|
||||
}
|
||||
if ( isset( $mode ) && absint( $post_id ) === absint( $core_ids[ $mode ] ) ) {
|
||||
$args = array(
|
||||
'post_type' => 'um_form',
|
||||
'post_type' => $post_type,
|
||||
'meta_key' => '_um_mode',
|
||||
'meta_value' => $mode,
|
||||
'meta_value' => $meta_value_mode,
|
||||
'posts_per_page' => 1,
|
||||
'orderby' => 'date',
|
||||
'post_status' => 'publish',
|
||||
'order' => 'DESC',
|
||||
'fields' => 'ids',
|
||||
'post__not_in' => array( $form_id ),
|
||||
'post__not_in' => array( $post_id ),
|
||||
);
|
||||
|
||||
$forms = get_posts( $args );
|
||||
if ( ! empty( $forms ) ) {
|
||||
$new_form_id = $forms[0];
|
||||
$core_forms[ $mode ] = $new_form_id;
|
||||
$new_post_id = $forms[0];
|
||||
$core_ids[ $mode ] = $new_post_id;
|
||||
|
||||
/**
|
||||
* Filters Ultimate Member default forms ids.
|
||||
*
|
||||
* @param {array} $core_forms Default forms ids.
|
||||
* @param {int} $form_id Deleted form ID.
|
||||
* @param {array} $core_ids Default forms ids.
|
||||
* @param {int} $post_id Deleted psot ID.
|
||||
* @param {string} $key Post type key.
|
||||
*
|
||||
* @return {array} Default forms ids.
|
||||
*
|
||||
@@ -210,15 +232,15 @@ if ( ! class_exists( 'um\common\CPT' ) ) {
|
||||
* @hook um_default_forms_ids_on_delete
|
||||
*
|
||||
* @example <caption>Set default profile form ID as 1.</caption>
|
||||
* function my_um_default_forms_ids_on_delete( $core_forms, $form_id ) {
|
||||
* function my_um_default_forms_ids_on_delete( $core_ids, $form_id, $key ) {
|
||||
* // your code here
|
||||
* $core_forms['profile'] = 1;
|
||||
* return $core_forms;
|
||||
* $core_ids['profile'] = 1;
|
||||
* return $core_ids;
|
||||
* }
|
||||
* add_filter( 'um_default_forms_ids_on_delete', 'my_um_default_forms_ids_on_delete', 10, 2 );
|
||||
* add_filter( 'um_default_forms_ids_on_delete', 'my_um_default_forms_ids_on_delete', 10, 3 );
|
||||
*/
|
||||
$core_forms = apply_filters( 'um_default_forms_ids_on_delete', $core_forms, $form_id );
|
||||
update_option( 'um_core_forms', $core_forms );
|
||||
$core_ids = apply_filters( 'um_default_forms_ids_on_delete', $core_ids, $post_id, $key );
|
||||
update_option( $key, $core_ids );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user