267 lines
7.3 KiB
PHP
267 lines
7.3 KiB
PHP
<?php
|
|
/**
|
|
* Genesis Framework.
|
|
*
|
|
* WARNING: This file is part of the core Genesis Framework. DO NOT edit this file under any circumstances.
|
|
* Please do all modifications in the form of a child theme.
|
|
*
|
|
* @package Genesis\Admin
|
|
* @author StudioPress
|
|
* @license GPL-2.0+
|
|
* @link https://my.studiopress.com/themes/genesis/
|
|
*/
|
|
|
|
add_filter( 'user_contactmethods', 'genesis_user_contactmethods' );
|
|
/**
|
|
* Filter the contact methods registered for users.
|
|
*
|
|
* Currently just adds a Google+ field.
|
|
*
|
|
* @since 1.9.0
|
|
*
|
|
* @param array $contactmethods Array of contact methods.
|
|
* @return array Contact methods.
|
|
*/
|
|
function genesis_user_contactmethods( array $contactmethods ) {
|
|
|
|
$contactmethods['googleplus'] = __( 'Google+', 'genesis' );
|
|
|
|
return $contactmethods;
|
|
|
|
}
|
|
|
|
add_action( 'show_user_profile', 'genesis_user_options_fields' );
|
|
add_action( 'edit_user_profile', 'genesis_user_options_fields' );
|
|
/**
|
|
* Add fields for user permissions for Genesis features to the user edit screen.
|
|
*
|
|
* Checkbox settings are:
|
|
*
|
|
* * Enable Genesis Admin Menu?
|
|
* * Enable SEO Settings Submenu?
|
|
* * Enable Import/Export Submenu?
|
|
*
|
|
* @since 1.4.0
|
|
*
|
|
* @param \WP_User $user User object.
|
|
* @return void Return early if current user can not edit users.
|
|
*/
|
|
function genesis_user_options_fields( $user ) {
|
|
|
|
if ( current_user_can( 'edit_users', $user->ID ) ) {
|
|
genesis_meta_boxes()->show_meta_box( 'genesis-user-settings', $user );
|
|
}
|
|
|
|
}
|
|
|
|
add_action( 'show_user_profile', 'genesis_user_archive_fields' );
|
|
add_action( 'edit_user_profile', 'genesis_user_archive_fields' );
|
|
/**
|
|
* Add fields for author archives contents to the user edit screen.
|
|
*
|
|
* Input / Textarea fields are:
|
|
*
|
|
* * Custom Archive Headline
|
|
* * Custom Description Text
|
|
*
|
|
* Checkbox fields are:
|
|
*
|
|
* * Enable Author Box on this User's Posts?
|
|
* * Enable Author Box on this User's Archives?
|
|
*
|
|
* @since 1.6.0
|
|
*
|
|
* @param \WP_User $user User object.
|
|
* @return void Return early if current user can not edit users.
|
|
*/
|
|
function genesis_user_archive_fields( $user ) {
|
|
|
|
if ( current_user_can( 'edit_users', $user->ID ) ) {
|
|
genesis_meta_boxes()->show_meta_box( 'genesis-user-author', $user );
|
|
}
|
|
|
|
}
|
|
|
|
add_action( 'show_user_profile', 'genesis_user_seo_fields' );
|
|
add_action( 'edit_user_profile', 'genesis_user_seo_fields' );
|
|
/**
|
|
* Add fields for author archive SEO to the user edit screen.
|
|
*
|
|
* Input / Textarea fields are:
|
|
*
|
|
* * Custom Document Title
|
|
* * Meta Description
|
|
* * Meta Keywords
|
|
*
|
|
* Checkbox fields are:
|
|
*
|
|
* * Apply noindex to this archive?
|
|
* * Apply nofollow to this archive?
|
|
* * Apply noarchive to this archive?
|
|
*
|
|
* @since 1.4.0
|
|
*
|
|
* @param \WP_User $user User object.
|
|
* @return void Return early if current user can not edit users.
|
|
*/
|
|
function genesis_user_seo_fields( $user ) {
|
|
|
|
if ( current_user_can( 'edit_users', $user->ID ) ) {
|
|
genesis_meta_boxes()->show_meta_box( 'genesis-user-seo', $user );
|
|
}
|
|
|
|
}
|
|
|
|
add_action( 'show_user_profile', 'genesis_user_layout_fields' );
|
|
add_action( 'edit_user_profile', 'genesis_user_layout_fields' );
|
|
/**
|
|
* Add author archive layout selector to the user edit screen.
|
|
*
|
|
* @since 1.4.0
|
|
*
|
|
* @param \WP_User $user User object.
|
|
*
|
|
* @return void Return early if current theme does not support `genesis-archive-layouts`, or Genesis
|
|
* does not have multiple layouts, or if current user can not edit users.
|
|
*/
|
|
function genesis_user_layout_fields( $user ) {
|
|
|
|
if ( ! current_theme_supports( 'genesis-archive-layouts' ) || ! genesis_has_multiple_layouts() ) {
|
|
return;
|
|
}
|
|
|
|
if ( current_user_can( 'edit_users', $user->ID ) ) {
|
|
genesis_meta_boxes()->show_meta_box( 'genesis-user-layout', $user );
|
|
}
|
|
|
|
}
|
|
|
|
add_action( 'personal_options_update', 'genesis_user_meta_save' );
|
|
add_action( 'edit_user_profile_update', 'genesis_user_meta_save' );
|
|
/**
|
|
* Update user meta when user edit page is saved.
|
|
*
|
|
* @since 1.4.0
|
|
*
|
|
* @param int $user_id User ID.
|
|
* @return void Return early if current user can not edit users, or no meta fields submitted.
|
|
*/
|
|
function genesis_user_meta_save( $user_id ) {
|
|
|
|
if ( ! current_user_can( 'edit_users', $user_id ) ) {
|
|
return;
|
|
}
|
|
|
|
if ( ! isset( $_POST['genesis-meta'] ) || ! is_array( $_POST['genesis-meta'] ) ) {
|
|
return;
|
|
}
|
|
|
|
$defaults = array(
|
|
'genesis_admin_menu' => '',
|
|
'genesis_seo_settings_menu' => '',
|
|
'genesis_import_export_menu' => '',
|
|
'genesis_author_box_single' => '',
|
|
'genesis_author_box_archive' => '',
|
|
'headline' => '',
|
|
'intro_text' => '',
|
|
'doctitle' => '',
|
|
'meta_description' => '',
|
|
'meta_keywords' => '',
|
|
'noindex' => '',
|
|
'nofollow' => '',
|
|
'noarchive' => '',
|
|
'layout' => '',
|
|
);
|
|
|
|
/**
|
|
* Filter the user meta defaults array.
|
|
*
|
|
* Allows developer to filter the default array of user meta key => value pairs.
|
|
*
|
|
* @since 2.1.0
|
|
*
|
|
* @param array $defaults Default user meta array.
|
|
*/
|
|
$defaults = apply_filters( 'genesis_user_meta_defaults', $defaults );
|
|
|
|
$meta = wp_parse_args( $_POST['genesis-meta'], $defaults );
|
|
|
|
$meta['headline'] = strip_tags( $meta['headline'] );
|
|
$meta['intro_text'] = current_user_can( 'unfiltered_html' ) ? $meta['intro_text'] : genesis_formatting_kses( $meta['intro_text'] );
|
|
|
|
foreach ( $meta as $key => $value ) {
|
|
update_user_meta( $user_id, $key, $value );
|
|
}
|
|
|
|
}
|
|
|
|
add_filter( 'get_the_author_genesis_admin_menu', 'genesis_user_meta_default_on', 10, 2 );
|
|
add_filter( 'get_the_author_genesis_seo_settings_menu', 'genesis_user_meta_default_on', 10, 2 );
|
|
add_filter( 'get_the_author_genesis_import_export_menu', 'genesis_user_meta_default_on', 10, 2 );
|
|
/**
|
|
* Check to see if user data has actually been saved, or if defaults need to be forced.
|
|
*
|
|
* This filter is useful for user options that need to be "on" by default, but keeps us from having to push defaults
|
|
* into the database, which would be a very expensive task.
|
|
*
|
|
* @since 1.4.0
|
|
*
|
|
* @global bool|object authordata User object if successful, false if not.
|
|
*
|
|
* @param string|bool $value The submitted value.
|
|
* @param int $user_id User ID.
|
|
* @return mixed|int Submitted value, user field value, or `1`.
|
|
*/
|
|
function genesis_user_meta_default_on( $value, $user_id ) {
|
|
|
|
// If a real value exists, simply return it.
|
|
if ( $value ) {
|
|
return $value;
|
|
}
|
|
|
|
// Get the name of the field by removing the prefix from the active filter.
|
|
$field = str_replace( 'get_the_author_', '', current_filter() );
|
|
|
|
// Setup user data.
|
|
if ( ! $user_id ) {
|
|
global $authordata;
|
|
} else {
|
|
$authordata = get_userdata( $user_id );
|
|
}
|
|
|
|
// Just in case.
|
|
$user_field = "user_$field";
|
|
if ( isset( $authordata->$user_field ) ) {
|
|
return $authordata->user_field;
|
|
}
|
|
|
|
// If an empty or false value exists, return it.
|
|
if ( isset( $authordata->$field ) ) {
|
|
return $value;
|
|
}
|
|
|
|
// If all that fails, default to true.
|
|
return 1;
|
|
|
|
}
|
|
|
|
add_filter( 'get_the_author_genesis_author_box_single', 'genesis_author_box_single_default_on', 10, 2 );
|
|
/**
|
|
* Conditionally force a default 1 value for each users' author box setting.
|
|
*
|
|
* @since 1.4.0
|
|
*
|
|
* @param string $value Submitted value.
|
|
* @param int $user_id User ID.
|
|
* @return mixed Existing user meta value, or `1`.
|
|
*/
|
|
function genesis_author_box_single_default_on( $value, $user_id ) {
|
|
|
|
if ( genesis_get_option( 'author_box_single' ) ) {
|
|
return genesis_user_meta_default_on( $value, $user_id );
|
|
} else {
|
|
return $value;
|
|
}
|
|
|
|
}
|