mirror of
https://github.com/10h30/ultimatemember.git
synced 2026-06-05 15:09:37 +09:00
1a3a6aec53
This update modifies the AJAX request in `forms.js` by including the field ID in the data payload. This improvement enables more precise handling of form fields in the Ultimate Member plugin's admin interface.
91 lines
2.6 KiB
PHP
91 lines
2.6 KiB
PHP
<?php
|
|
namespace um\ajax;
|
|
|
|
use WP_Query;
|
|
|
|
if ( ! defined( 'ABSPATH' ) ) {
|
|
exit;
|
|
}
|
|
|
|
/**
|
|
* Class Pages
|
|
*
|
|
* @package um\ajax
|
|
*/
|
|
class Pages {
|
|
|
|
/**
|
|
* Pages constructor.
|
|
*/
|
|
public function __construct() {
|
|
add_action( 'wp_ajax_um_get_pages_list', array( $this, 'get_pages_list' ) );
|
|
}
|
|
|
|
/**
|
|
* AJAX callback for getting the pages list
|
|
*/
|
|
public function get_pages_list() {
|
|
check_ajax_referer( 'um-admin-nonce', 'nonce' );
|
|
|
|
// we will pass post IDs and titles to this array
|
|
$return = array();
|
|
|
|
$pre_result = apply_filters( 'um_admin_settings_get_pages_list', false );
|
|
|
|
if ( false === $pre_result ) {
|
|
$query_args = array(
|
|
'post_type' => 'page',
|
|
'post_status' => 'publish', // if you don't want drafts to be returned
|
|
'ignore_sticky_posts' => 1,
|
|
'posts_per_page' => 10, // how much to show at once
|
|
'paged' => ! empty( $_GET['page'] ) ? absint( $_GET['page'] ) : 1,
|
|
'orderby' => 'title',
|
|
'order' => 'asc',
|
|
);
|
|
|
|
if ( ! empty( $_GET['search'] ) ) {
|
|
$query_args['s'] = sanitize_text_field( $_GET['search'] ); // the search query
|
|
}
|
|
|
|
$field_id = ! empty( $_GET['field_id'] ) ? sanitize_text_field( $_GET['field_id'] ) : null;
|
|
if ( 'form__um_register_use_gdpr_content_id' === $field_id ) {
|
|
$predefined_ids = array();
|
|
$predefined_pages = array_keys( UM()->config()->get( 'predefined_pages' ) );
|
|
foreach ( $predefined_pages as $slug ) {
|
|
$p_id = um_get_predefined_page_id( $slug );
|
|
if ( empty( $p_id ) ) {
|
|
continue;
|
|
}
|
|
$predefined_ids[] = $p_id;
|
|
}
|
|
$predefined_ids = array_unique( $predefined_ids );
|
|
if ( ! empty( $predefined_ids ) ) {
|
|
$query_args['post__not_in'] = $predefined_ids;
|
|
}
|
|
}
|
|
// since 2.10.6
|
|
$query_args = apply_filters( 'um_admin_settings_get_pages_list_args', $query_args, $field_id );
|
|
|
|
$search_results = new WP_Query( $query_args );
|
|
|
|
if ( $search_results->have_posts() ) {
|
|
while ( $search_results->have_posts() ) {
|
|
$search_results->the_post();
|
|
|
|
// shorten the title a little
|
|
$title = ( mb_strlen( $search_results->post->post_title ) > 50 ) ? mb_substr( $search_results->post->post_title, 0, 49 ) . '...' : $search_results->post->post_title;
|
|
$title = sprintf( __( '%s (ID: %s)', 'ultimate-member' ), $title, $search_results->post->ID );
|
|
$return[] = array( $search_results->post->ID, $title ); // array( Post ID, Post Title )
|
|
}
|
|
}
|
|
|
|
$return['total_count'] = $search_results->found_posts;
|
|
} else {
|
|
// got already calculated posts array from 3rd-party integrations (e.g. WPML, Polylang)
|
|
$return = $pre_result;
|
|
}
|
|
|
|
wp_send_json( $return );
|
|
}
|
|
}
|