mirror of
https://github.com/10h30/ultimatemember.git
synced 2026-07-11 18:56:10 +09:00
- page_select field for the Settings > General > Pages;
This commit is contained in:
@@ -97,6 +97,52 @@ function um_admin_init_users_select() {
|
||||
}
|
||||
|
||||
|
||||
function um_admin_init_pages_select() {
|
||||
// multiple select with AJAX search
|
||||
jQuery('.um-pages-select2').select2({
|
||||
ajax: {
|
||||
url: wp.ajax.settings.url,
|
||||
dataType: 'json',
|
||||
delay: 250, // delay in ms while typing when to perform a AJAX search
|
||||
data: function( params ) {
|
||||
return {
|
||||
search: params.term, // search query
|
||||
action: 'um_get_pages_list', // AJAX action for admin-ajax.php
|
||||
page: params.page || 1, // infinite scroll pagination
|
||||
nonce: um_admin_scripts.nonce
|
||||
};
|
||||
},
|
||||
processResults: function( data, params ) {
|
||||
params.page = params.page || 1;
|
||||
var options = [];
|
||||
|
||||
if ( data ) {
|
||||
|
||||
// data is the array of arrays, and each of them contains ID and the Label of the option
|
||||
jQuery.each( data, function( index, text ) { // do not forget that "index" is just auto incremented value
|
||||
if ( index === 'total_count' ) {
|
||||
return;
|
||||
}
|
||||
options.push( { id: text[0], text: text[1] } );
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
return {
|
||||
results: options,
|
||||
pagination: {
|
||||
more: ( params.page * 10 ) < data.total_count
|
||||
}
|
||||
};
|
||||
},
|
||||
cache: true
|
||||
},
|
||||
placeholder: jQuery(this).data('placeholder'),
|
||||
minimumInputLength: 0, // the minimum of symbols to input before perform a search
|
||||
allowClear: true,
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param field_key
|
||||
@@ -123,6 +169,7 @@ function um_same_page_something_wrong( field_key ) {
|
||||
|
||||
jQuery(document).ready( function() {
|
||||
um_admin_init_users_select();
|
||||
um_admin_init_pages_select();
|
||||
|
||||
/**
|
||||
* Same page upgrade field
|
||||
|
||||
Vendored
+1
-1
File diff suppressed because one or more lines are too long
@@ -1093,6 +1093,79 @@ if ( ! class_exists( 'um\admin\core\Admin_Forms' ) ) {
|
||||
return $html;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $field_data
|
||||
*
|
||||
* @since 2.8.3
|
||||
*
|
||||
* @return bool|string
|
||||
*/
|
||||
public function render_page_select( $field_data ) {
|
||||
if ( empty( $field_data['id'] ) ) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$multiple = ! empty( $field_data['multi'] ) ? 'multiple' : '';
|
||||
|
||||
$id = ( ! empty( $this->form_data['prefix_id'] ) ? sanitize_title( $this->form_data['prefix_id'] ) : '' ) . '_' . $field_data['id'];
|
||||
$id_attr = ' id="' . esc_attr( $id ) . '" ';
|
||||
|
||||
$class = ! empty( $field_data['class'] ) ? $field_data['class'] . ' ' : ' ';
|
||||
$class .= ! empty( $field_data['size'] ) ? 'um-' . $field_data['size'] . '-field' : 'um-long-field';
|
||||
$class_attr = ' class="um-forms-field um-pages-select2 ' . esc_attr( $class ) . '" ';
|
||||
|
||||
$data = array(
|
||||
'field_id' => $field_data['id'],
|
||||
);
|
||||
|
||||
if ( ! empty( $field_data['placeholder'] ) ) {
|
||||
$data['placeholder'] = $field_data['placeholder'];
|
||||
}
|
||||
|
||||
$data_attr = '';
|
||||
foreach ( $data as $key => $value ) {
|
||||
$data_attr .= ' data-' . $key . '="' . esc_attr( $value ) . '" ';
|
||||
}
|
||||
|
||||
$name = $field_data['id'];
|
||||
$name = ! empty( $this->form_data['prefix_id'] ) ? $this->form_data['prefix_id'] . '[' . $name . ']' : $name;
|
||||
$hidden_name_attr = ' name="' . $name . '" ';
|
||||
$name = $name . ( ! empty( $field_data['multi'] ) ? '[]' : '' );
|
||||
$name_attr = ' name="' . $name . '" ';
|
||||
|
||||
$value = $this->get_field_value( $field_data );
|
||||
|
||||
$options = '<option value="">' . esc_html( $data['placeholder'] ) . '</option>';
|
||||
if ( ! empty( $field_data['options'] ) ) {
|
||||
foreach ( $field_data['options'] as $key => $option ) {
|
||||
if ( ! empty( $field_data['multi'] ) ) {
|
||||
|
||||
if ( ! is_array( $value ) || empty( $value ) ) {
|
||||
$value = array();
|
||||
}
|
||||
|
||||
$options .= '<option value="' . $key . '" ' . selected( in_array( $key, $value ), true, false ) . '>' . esc_html( $option ) . '</option>';
|
||||
} else {
|
||||
$options .= '<option value="' . $key . '" ' . selected( (string)$key == $value, true, false ) . '>' . esc_html( $option ) . '</option>';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$hidden = '';
|
||||
if ( ! empty( $multiple ) ) {
|
||||
$hidden = "<input type=\"hidden\" $hidden_name_attr value=\"\" />";
|
||||
}
|
||||
|
||||
$button = '';
|
||||
$slug = str_replace( 'core_', '', $field_data['id'] );
|
||||
if ( ! um_get_predefined_page_id( $slug ) || 'publish' !== get_post_status( um_get_predefined_page_id( $slug ) ) ) {
|
||||
$button = ' <a href="' . esc_url( add_query_arg( array( 'um_adm_action' => 'install_predefined_page', 'um_page_slug' => $slug ) ) ) . '" class="button button-primary">' . esc_html__( 'Create Default', 'ultimate-member' ) . '</a>';
|
||||
}
|
||||
|
||||
$html = "$hidden<select $multiple $id_attr $name_attr $class_attr $data_attr>$options</select>$button";
|
||||
|
||||
return $html;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $field_data
|
||||
|
||||
@@ -253,36 +253,130 @@ if ( ! class_exists( 'um\admin\core\Admin_Settings' ) ) {
|
||||
),
|
||||
);
|
||||
|
||||
$core_pages = UM()->config()->core_pages;
|
||||
|
||||
foreach ( $core_pages as $page_s => $page ) {
|
||||
$have_pages = UM()->query()->wp_pages();
|
||||
$page_id = UM()->options()->get_core_page_id( $page_s );
|
||||
// $core_pages = UM()->config()->core_pages;
|
||||
//
|
||||
// foreach ( $core_pages as $page_s => $page ) {
|
||||
// $have_pages = UM()->query()->wp_pages();
|
||||
// $page_id = UM()->options()->get_core_page_id( $page_s );
|
||||
//
|
||||
// $page_title = ! empty( $page['title'] ) ? $page['title'] : '';
|
||||
//
|
||||
// if ( 'reached_maximum_limit' === $have_pages ) {
|
||||
// $general_pages_fields[] = array(
|
||||
// 'id' => $page_id,
|
||||
// 'type' => 'text',
|
||||
// // translators: %s: Page title
|
||||
// 'label' => sprintf( __( '%s page', 'ultimate-member' ), $page_title ),
|
||||
// 'placeholder' => __( 'Add page ID', 'ultimate-member' ),
|
||||
// 'compiler' => true,
|
||||
// 'size' => 'small',
|
||||
// );
|
||||
// } else {
|
||||
// $general_pages_fields[] = array(
|
||||
// 'id' => $page_id,
|
||||
// 'type' => 'select',
|
||||
// // translators: %s: Page title
|
||||
// 'label' => sprintf( __( '%s page', 'ultimate-member' ), $page_title ),
|
||||
// 'options' => UM()->query()->wp_pages(),
|
||||
// 'placeholder' => __( 'Choose a page...', 'ultimate-member' ),
|
||||
// 'compiler' => true,
|
||||
// 'size' => 'small',
|
||||
// );
|
||||
// }
|
||||
//
|
||||
// $settings_map[ $page_id ] = array(
|
||||
// 'sanitize' => 'absint',
|
||||
// );
|
||||
// }
|
||||
|
||||
foreach ( UM()->config()->get( 'predefined_pages' ) as $slug => $page ) {
|
||||
$page_id = UM()->options()->get_predefined_page_option_key( $slug );
|
||||
$page_title = ! empty( $page['title'] ) ? $page['title'] : '';
|
||||
|
||||
if ( 'reached_maximum_limit' === $have_pages ) {
|
||||
$general_pages_fields[] = array(
|
||||
'id' => $page_id,
|
||||
'type' => 'text',
|
||||
// translators: %s: Page title
|
||||
'label' => sprintf( __( '%s page', 'ultimate-member' ), $page_title ),
|
||||
'placeholder' => __( 'Add page ID', 'ultimate-member' ),
|
||||
'compiler' => true,
|
||||
'size' => 'small',
|
||||
);
|
||||
} else {
|
||||
$general_pages_fields[] = array(
|
||||
'id' => $page_id,
|
||||
'type' => 'select',
|
||||
// translators: %s: Page title
|
||||
'label' => sprintf( __( '%s page', 'ultimate-member' ), $page_title ),
|
||||
'options' => UM()->query()->wp_pages(),
|
||||
'placeholder' => __( 'Choose a page...', 'ultimate-member' ),
|
||||
'compiler' => true,
|
||||
'size' => 'small',
|
||||
);
|
||||
$options = array();
|
||||
$page_value = '';
|
||||
|
||||
$pre_result = apply_filters( 'um_admin_settings_pages_list_value', false, $page_id );
|
||||
if ( false === $pre_result ) {
|
||||
if ( ! empty( $opt_value = UM()->options()->get( $page_id ) ) ) {
|
||||
if ( 'publish' === get_post_status( $opt_value ) ) {
|
||||
$title = get_the_title( $opt_value );
|
||||
$title = ( mb_strlen( $title ) > 50 ) ? mb_substr( $title, 0, 49 ) . '...' : $title;
|
||||
$title = sprintf( __( '%s (ID: %s)', 'ultimate-member' ), $title, $opt_value );
|
||||
|
||||
$options = array( $opt_value => $title );
|
||||
$page_value = $opt_value;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// `page_value` variable that we transfer from 3rd-party hook for getting filtered option value also
|
||||
$page_value = $pre_result['page_value'];
|
||||
unset( $pre_result['page_value'] );
|
||||
|
||||
$options = $pre_result;
|
||||
}
|
||||
|
||||
$page_setting_description = '';
|
||||
if ( ! empty( $page_value ) ) {
|
||||
$content = get_the_content( null, false, $page_value );
|
||||
switch ( $slug ) {
|
||||
case 'account':
|
||||
if ( $page_value === um_get_predefined_page_id( 'user' ) ) {
|
||||
$page_setting_description = __( '<strong>Warning:</strong> Account page and User page must be separate pages.', 'ultimate-member' );
|
||||
} elseif ( ! has_shortcode( $content, 'ultimatemember_account' ) ) {
|
||||
$page_setting_description = __( '<strong>Warning:</strong> Account page must contain shortcode <code>[ultimatemember_account]</code>.', 'ultimate-member' );
|
||||
} elseif ( function_exists( 'wc_get_page_id' ) && wc_get_page_id( 'myaccount' ) === um_get_predefined_page_id( 'account' ) ) {
|
||||
$page_setting_description = __( '<strong>Warning:</strong> Account page and WooCommerce "My account" page should be separate pages.', 'ultimate-member' );
|
||||
}
|
||||
break;
|
||||
case 'login':
|
||||
if ( $page_value === um_get_predefined_page_id( 'logout' ) ) {
|
||||
$page_setting_description = __( '<strong>Warning:</strong> Login page and Logout page must be separate pages.', 'ultimate-member' );
|
||||
} elseif ( ! has_shortcode( $content, 'ultimatemember' ) ) {
|
||||
$page_setting_description = __( '<strong>Warning:</strong> Login page must contain a login form shortcode. You can get existing shortcode or create a new one <a href="edit.php?post_type=um_form" target="_blank">here</a>.', 'ultimate-member' );
|
||||
}
|
||||
break;
|
||||
case 'logout':
|
||||
if ( $page_value === (int) get_option( 'page_on_front' ) ) {
|
||||
$page_setting_description = __( '<strong>Warning:</strong> Home page and Logout page must be separate pages.', 'ultimate-member' );
|
||||
} elseif ( $page_value === um_get_predefined_page_id( 'login' ) ) {
|
||||
$page_setting_description = __( '<strong>Warning:</strong> Login page and Logout page must be separate pages.', 'ultimate-member' );
|
||||
}
|
||||
break;
|
||||
case 'password-reset':
|
||||
if ( ! has_shortcode( $content, 'ultimatemember_password' ) ) {
|
||||
$page_setting_description = __( '<strong>Warning:</strong> Password Reset page must contain shortcode <code>[ultimatemember_password]</code>.', 'ultimate-member' );
|
||||
}
|
||||
break;
|
||||
case 'register':
|
||||
if ( ! has_shortcode( $content, 'ultimatemember' ) ) {
|
||||
$page_setting_description = __( '<strong>Warning:</strong> Register page must contain a registration form shortcode. You can get existing shortcode or create a new one <a href="edit.php?post_type=um_form" target="_blank">here</a>.', 'ultimate-member' );
|
||||
}
|
||||
break;
|
||||
case 'user':
|
||||
if ( $page_value === um_get_predefined_page_id( 'account' ) ) {
|
||||
$description = __( '<strong>Warning:</strong> Account page and User page must be separate pages.', 'ultimate-member' );
|
||||
} elseif ( ! has_shortcode( $content, 'ultimatemember' ) ) {
|
||||
$page_setting_description = __( '<strong>Warning:</strong> User page must contain a profile form shortcode. You can get existing shortcode or create a new one <a href="edit.php?post_type=um_form" target="_blank">here</a>.', 'ultimate-member' );
|
||||
}
|
||||
break;
|
||||
default:
|
||||
$page_setting_description = apply_filters( 'um_pages_settings_description', $page_setting_description, $content, $slug );
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
$general_pages_fields[] = array(
|
||||
'id' => $page_id,
|
||||
'type' => 'page_select',
|
||||
// translators: %s: Page title
|
||||
'label' => sprintf( __( '%s page', 'ultimate-member' ), $page_title ),
|
||||
'options' => $options,
|
||||
'value' => $page_value,
|
||||
'placeholder' => __( 'Choose a page...', 'ultimate-member' ),
|
||||
'size' => 'small',
|
||||
'description' => $page_setting_description,
|
||||
);
|
||||
|
||||
$settings_map[ $page_id ] = array(
|
||||
'sanitize' => 'absint',
|
||||
|
||||
@@ -20,9 +20,22 @@ if ( ! class_exists( 'um\ajax\Init' ) ) {
|
||||
* @used-by \UM::includes()
|
||||
*/
|
||||
public function includes() {
|
||||
$this->pages();
|
||||
$this->secure();
|
||||
}
|
||||
|
||||
/**
|
||||
* @since 2.8.3
|
||||
*
|
||||
* @return Pages
|
||||
*/
|
||||
public function pages() {
|
||||
if ( empty( UM()->classes['um\ajax\pages'] ) ) {
|
||||
UM()->classes['um\ajax\pages'] = new Pages();
|
||||
}
|
||||
return UM()->classes['um\ajax\pages'];
|
||||
}
|
||||
|
||||
/**
|
||||
* @since 2.6.8
|
||||
*
|
||||
|
||||
@@ -0,0 +1,69 @@
|
||||
<?php
|
||||
namespace um\ajax;
|
||||
|
||||
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() {
|
||||
UM()->admin()->check_ajax_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' => absint( $_GET['page'] ),
|
||||
'orderby' => 'title',
|
||||
'order' => 'asc',
|
||||
);
|
||||
|
||||
if ( ! empty( $_GET['search'] ) ) {
|
||||
$query_args['s'] = sanitize_text_field( $_GET['search'] ); // the search query
|
||||
}
|
||||
|
||||
$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 );
|
||||
}
|
||||
}
|
||||
@@ -31,6 +31,13 @@ if ( ! class_exists( 'um\Config' ) ) {
|
||||
*/
|
||||
public $core_pages;
|
||||
|
||||
/**
|
||||
* @since 2.8.3
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
public $predefined_pages;
|
||||
|
||||
/**
|
||||
* @var array
|
||||
*/
|
||||
@@ -841,6 +848,90 @@ if ( ! class_exists( 'um\Config' ) ) {
|
||||
'password-reset' => array( 'title' => __( 'Password Reset', 'ultimate-member' ) ),
|
||||
) );
|
||||
}
|
||||
//end class
|
||||
|
||||
/**
|
||||
* Get variable from config
|
||||
*
|
||||
* @param string $key
|
||||
*
|
||||
* @return mixed
|
||||
*
|
||||
* @since 2.8.3
|
||||
*/
|
||||
public function get( $key ) {
|
||||
if ( empty( $this->$key ) ) {
|
||||
$this->{'init_' . $key}();
|
||||
}
|
||||
return apply_filters( 'um_config_get', $this->$key, $key );
|
||||
}
|
||||
|
||||
/**
|
||||
* Init plugin core pages.
|
||||
*
|
||||
* @since 2.8.3
|
||||
*/
|
||||
public function init_predefined_pages() {
|
||||
$core_forms = get_option( 'um_core_forms', array() );
|
||||
$setup_shortcodes = array_merge(
|
||||
array(
|
||||
'profile' => '',
|
||||
'login' => '',
|
||||
'register' => '',
|
||||
),
|
||||
$core_forms
|
||||
);
|
||||
|
||||
$this->predefined_pages = array(
|
||||
'user' => array(
|
||||
'title' => __( 'User', 'ultimate-member' ),
|
||||
'content' => ! empty( $setup_shortcodes['profile'] ) ? '[ultimatemember form_id="' . $setup_shortcodes['profile'] . '"]' : '',
|
||||
),
|
||||
'login' => array(
|
||||
'title' => __( 'Login', 'ultimate-member' ),
|
||||
'content' => ! empty( $setup_shortcodes['login'] ) ? '[ultimatemember form_id="' . $setup_shortcodes['login'] . '"]' : '',
|
||||
),
|
||||
'register' => array(
|
||||
'title' => __( 'Register', 'ultimate-member' ),
|
||||
'content' => ! empty( $setup_shortcodes['register'] ) ? '[ultimatemember form_id="' . $setup_shortcodes['register'] . '"]' : '',
|
||||
),
|
||||
'logout' => array(
|
||||
'title' => __( 'Logout', 'ultimate-member' ),
|
||||
'content' => '',
|
||||
),
|
||||
'account' => array(
|
||||
'title' => __( 'Account', 'ultimate-member' ),
|
||||
'content' => '[ultimatemember_account]',
|
||||
),
|
||||
'password-reset' => array(
|
||||
'title' => __( 'Password Reset', 'ultimate-member' ),
|
||||
'content' => '[ultimatemember_password]',
|
||||
),
|
||||
);
|
||||
|
||||
/**
|
||||
* Filters Ultimate Member predefined pages.
|
||||
*
|
||||
* @param {array} $pages Predefined pages.
|
||||
*
|
||||
* @return {array} Predefined pages.
|
||||
*
|
||||
* @since 2.8.3
|
||||
* @hook um_predefined_pages
|
||||
*
|
||||
* @example <caption>Extend UM core pages.</caption>
|
||||
* function my_predefined_pages( $pages ) {
|
||||
* // your code here
|
||||
* $pages['my_page_key'] = array( 'title' => __( 'My Page Title', 'my-translate-key' ) );
|
||||
* return $pages;
|
||||
* }
|
||||
* add_filter( 'um_predefined_pages', 'my_predefined_pages' );
|
||||
*/
|
||||
$this->predefined_pages = apply_filters( 'um_predefined_pages', $this->predefined_pages );
|
||||
|
||||
// since 2.8.3 legacy hook
|
||||
// @todo remove in 3.0 version
|
||||
$this->predefined_pages = apply_filters( 'um_core_pages', $this->predefined_pages );
|
||||
$this->core_pages = $this->predefined_pages;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -228,7 +228,8 @@ if ( ! class_exists( 'UM' ) ) {
|
||||
// init widgets
|
||||
add_action( 'widgets_init', array( &$this, 'widgets_init' ) );
|
||||
|
||||
//include short non class functions
|
||||
// Include short non-class functions
|
||||
require_once 'um-core-functions.php';
|
||||
require_once 'um-short-functions.php';
|
||||
require_once 'um-deprecated-functions.php';
|
||||
}
|
||||
@@ -585,8 +586,6 @@ if ( ! class_exists( 'UM' ) ) {
|
||||
$this->theme_updater();
|
||||
} elseif ( $this->is_request( 'frontend' ) ) {
|
||||
$this->frontend()->includes();
|
||||
$this->account();
|
||||
$this->password();
|
||||
$this->login();
|
||||
$this->register();
|
||||
$this->user_posts();
|
||||
@@ -594,6 +593,8 @@ if ( ! class_exists( 'UM' ) ) {
|
||||
}
|
||||
|
||||
//common includes
|
||||
$this->account();
|
||||
$this->password();
|
||||
$this->rewrite();
|
||||
$this->mail();
|
||||
$this->rest_api();
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
<?php
|
||||
namespace um\core;
|
||||
|
||||
// Exit if accessed directly
|
||||
if ( ! defined( 'ABSPATH' ) ) exit;
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit;
|
||||
}
|
||||
|
||||
if ( ! class_exists( 'um\core\Options' ) ) {
|
||||
|
||||
@@ -125,6 +126,18 @@ if ( ! class_exists( 'um\core\Options' ) ) {
|
||||
return $settings_defaults[ $option_id ];
|
||||
}
|
||||
|
||||
/**
|
||||
* Get predefined page option key
|
||||
*
|
||||
* @since 2.8.3
|
||||
*
|
||||
* @param string $slug
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function get_predefined_page_option_key( $slug ) {
|
||||
return apply_filters( 'um_predefined_page_option_key', "core_{$slug}" );
|
||||
}
|
||||
|
||||
/**
|
||||
* Get core page ID
|
||||
|
||||
Executable
+84
@@ -0,0 +1,84 @@
|
||||
<?php
|
||||
/**
|
||||
* Ultimate Member Core Functions
|
||||
*
|
||||
* General core functions available on both the front-end and admin.
|
||||
*
|
||||
* @version 2.8.3
|
||||
*/
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $slug
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
function um_predefined_page_slug_exists( $slug ) {
|
||||
$predefined_pages = UM()->config()->get( 'predefined_pages' );
|
||||
return array_key_exists( $slug, $predefined_pages );
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $slug
|
||||
*
|
||||
* @return false|int
|
||||
*/
|
||||
function um_get_predefined_page_id( $slug ) {
|
||||
if ( ! um_predefined_page_slug_exists( $slug ) ) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$option_key = UM()->options()->get_predefined_page_option_key( $slug );
|
||||
return apply_filters( 'um_get_predefined_page_id', UM()->options()->get( $option_key ), $slug );
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param string $slug
|
||||
* @param null|int|\WP_Post $post
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
function um_is_predefined_page( $slug, $post = null ) {
|
||||
// handle $post inside, just we need make $post as \WP_Post. Otherwise something is wrong and return false
|
||||
if ( ! $post ) {
|
||||
global $post;
|
||||
|
||||
if ( empty( $post ) ) {
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
if ( is_numeric( $post ) ) {
|
||||
$post = get_post( $post );
|
||||
|
||||
if ( empty( $post ) ) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ( empty( $post->ID ) ) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return um_get_predefined_page_id( $slug ) === $post->ID;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get predefined page URL
|
||||
*
|
||||
* @param string $slug
|
||||
*
|
||||
* @return false|string
|
||||
*/
|
||||
function um_get_predefined_page_url( $slug ) {
|
||||
$url = false;
|
||||
|
||||
if ( $page_id = um_get_predefined_page_id( $slug ) ) {
|
||||
$url = get_permalink( $page_id );
|
||||
}
|
||||
|
||||
return $url;
|
||||
}
|
||||
Reference in New Issue
Block a user