Linux heracles.o2switch.net 4.18.0-553.62.1.lve.el8.x86_64 #1 SMP Mon Jul 21 17:50:35 UTC 2025 x86_64
/
home
/
ophq1335
/
www
/
wp-content
/
plugins
/
wp-seopress
/
inc
/
functions
/
//home/ophq1335/www/wp-content/plugins/wp-seopress/inc/functions/options-advanced-admin.php
<?php /** * Options advanced admin * * @package Functions */ defined( 'ABSPATH' ) || exit( 'Please don’t call the plugin directly. Thanks :)' ); // MANDATORY for using is_plugin_active. require_once ABSPATH . 'wp-admin/includes/plugin.php'; add_filter( 'sanitize_file_name', 'seopress_image_seo_cleaning_filename', 10 ); /** * Cleaning attachments filename * * @param string $filename Filename. * * @return string $filename */ function seopress_image_seo_cleaning_filename( $filename ) { if ( seopress_get_service( 'AdvancedOption' )->getAdvancedCleaningFileName() === '1' ) { $filename = apply_filters( 'seopress_image_seo_before_cleaning', $filename ); /* Force the file name in UTF-8 (encoding Windows / OS X / Linux) */ $filename = wp_check_invalid_utf8( $filename, true ); $char_not_clean = array( '/•/', '/·/', '/À/', '/Á/', '/Â/', '/Ã/', '/Ä/', '/Å/', '/Ç/', '/È/', '/É/', '/Ê/', '/Ë/', '/Ì/', '/Í/', '/Î/', '/Ï/', '/Ò/', '/Ó/', '/Ô/', '/Õ/', '/Ö/', '/Ù/', '/Ú/', '/Û/', '/Ü/', '/Ý/', '/à/', '/á/', '/â/', '/ã/', '/ä/', '/å/', '/ç/', '/è/', '/é/', '/ê/', '/ë/', '/ì/', '/í/', '/î/', '/ï/', '/ð/', '/ò/', '/ó/', '/ô/', '/õ/', '/ö/', '/ù/', '/ú/', '/û/', '/ü/', '/ý/', '/ÿ/', '/©/' ); $char_not_clean = apply_filters( 'seopress_image_seo_clean_input', $char_not_clean ); $clean = array( '-', '-', 'a', 'a', 'a', 'a', 'a', 'a', 'c', 'e', 'e', 'e', 'e', 'i', 'i', 'i', 'i', 'o', 'o', 'o', 'o', 'o', 'u', 'u', 'u', 'u', 'y', 'a', 'a', 'a', 'a', 'a', 'a', 'c', 'e', 'e', 'e', 'e', 'i', 'i', 'i', 'i', 'o', 'o', 'o', 'o', 'o', 'o', 'u', 'u', 'u', 'u', 'y', 'y', 'copy' ); $clean = apply_filters( 'seopress_image_seo_clean_output', $clean ); $friendly_filename = (string) preg_replace( $char_not_clean, $clean, $filename ); // After replacement, we destroy the last residues. $friendly_filename = (string) preg_replace( '/\?/', '', $friendly_filename ); // Remove uppercase. $friendly_filename = strtolower( $friendly_filename ); $friendly_filename = apply_filters( 'seopress_image_seo_after_cleaning', $friendly_filename ); $filename = $friendly_filename; } return $filename; } add_action( 'add_attachment', 'seopress_auto_image_attr' ); /** * Automatic image attributes * * @param string $post_ID Post ID. * @param boolean $bulk Bulk. */ function seopress_auto_image_attr( $post_ID, $bulk = false ) { if ( '1' === seopress_get_service( 'AdvancedOption' )->getImageAutoTitleEditor() || '1' === seopress_get_service( 'AdvancedOption' )->getImageAutoAltEditor() || '1' === seopress_get_service( 'AdvancedOption' )->getImageAutoCaptionEditor() || '1' === seopress_get_service( 'AdvancedOption' )->getImageAutoDescriptionEditor() || true === $bulk ) { if ( wp_attachment_is_image( $post_ID ) ) { $parent = get_post( $post_ID )->post_parent ? get_post( $post_ID )->post_parent : null; $cpt = get_post_type( $parent ) ? get_post_type( $parent ) : null; $img_attr = ''; if ( isset( $cpt ) && isset( $parent ) && in_array( $cpt, array( 'product', 'product_variation' ), true ) ) { $img_attr = get_post( $parent )->post_title; // Use the product title for WooCommerce products. } else { $img_attr = get_post( $post_ID )->post_title; } // Sanitize the title: remove hyphens, underscores & extra spaces. $img_attr = (string) preg_replace( '%\s*[-_\s]+\s*%', ' ', $img_attr ); // Lowercase attributes. $img_attr = strtolower( $img_attr ); $img_attr = apply_filters( 'seopress_auto_image_title', $img_attr, $cpt, $parent, $post_ID ); // Create an array with the image meta (Title, Caption, Description) to be updated. $img_attr_array = array( 'ID' => $post_ID ); // Image (ID) to be updated. if ( '1' === seopress_get_service( 'AdvancedOption' )->getImageAutoTitleEditor() ) { $img_attr_array['post_title'] = $img_attr; // Set image Title. } if ( '1' === seopress_get_service( 'AdvancedOption' )->getImageAutoCaptionEditor() ) { $img_attr_array['post_excerpt'] = $img_attr; // Set image Caption. } if ( '1' === seopress_get_service( 'AdvancedOption' )->getImageAutoDescriptionEditor() ) { $img_attr_array['post_content'] = $img_attr; // Set image Desc. } $img_attr_array = apply_filters( 'seopress_auto_image_attr', $img_attr_array ); // Set the image Alt-Text. if ( '1' === seopress_get_service( 'AdvancedOption' )->getImageAutoAltEditor() || true === $bulk ) { update_post_meta( $post_ID, '_wp_attachment_image_alt', $img_attr ); } // Set the image meta (e.g. Title, Excerpt, Content). if ( '1' === seopress_get_service( 'AdvancedOption' )->getImageAutoTitleEditor() || '1' === seopress_get_service( 'AdvancedOption' )->getImageAutoCaptionEditor() || '1' === seopress_get_service( 'AdvancedOption' )->getImageAutoDescriptionEditor() ) { wp_update_post( $img_attr_array ); } } } } // Remove Content Analysis Metaboxe. if ( seopress_get_service( 'AdvancedOption' )->getAppearanceCaMetaboxe() === '1' ) { /** * Function to remove content analysis metaboxe. * * @return void */ function seopress_advanced_appearance_ca_metaboxe_hook() { add_filter( 'seopress_metaboxe_content_analysis', '__return_false' ); } add_action( 'init', 'seopress_advanced_appearance_ca_metaboxe_hook', 999 ); } // Bulk actions. global $pagenow; if ( 'edit.php' === $pagenow || 'edit-tags.php' === $pagenow ) { /** * Function to add bulk action filters. * * @param string $key Key. * @param array $actions Actions. * * @return void */ function add_bulk_action_filters( $key, $actions ) { foreach ( $actions as $action => $handler ) { add_filter( 'bulk_actions-edit-' . $key, $action ); add_filter( 'handle_bulk_actions-edit-' . $key, $handler, 10, 3 ); } } // Define common actions and handlers. $common_actions = array( 'seopress_bulk_actions_noindex' => 'seopress_bulk_action_noindex_handler', 'seopress_bulk_actions_index' => 'seopress_bulk_action_index_handler', 'seopress_bulk_actions_nofollow' => 'seopress_bulk_action_nofollow_handler', 'seopress_bulk_actions_follow' => 'seopress_bulk_action_follow_handler', ); // Bulk actions for post types. $post_types = seopress_get_service( 'WordPressData' )->getPostTypes(); if ( ! empty( $post_types ) ) { foreach ( $post_types as $key => $value ) { if ( null === seopress_get_service( 'TitleOption' )->getSingleCptEnable( $key ) && '' !== $key ) { $post_type_actions = $common_actions + array( 'seopress_bulk_actions_redirect_enable' => 'seopress_bulk_action_redirect_enable_handler', 'seopress_bulk_actions_redirect_disable' => 'seopress_bulk_action_redirect_disable_handler', 'seopress_bulk_actions_add_instant_indexing' => 'seopress_bulk_action_add_instant_indexing_handler', ); add_bulk_action_filters( $key, $post_type_actions ); } } } // Bulk actions for taxonomies. $taxonomies = seopress_get_service( 'WordPressData' )->getTaxonomies(); if ( ! empty( $taxonomies ) ) { foreach ( $taxonomies as $key => $value ) { if ( null === seopress_get_service( 'TitleOption' )->getTaxEnable( $key ) && '' !== $key ) { add_bulk_action_filters( $key, $common_actions ); } } } // Bulk actions for WooCommerce products. if ( is_plugin_active( 'woocommerce/woocommerce.php' ) ) { add_bulk_action_filters( 'product', $common_actions ); } /** * No index bulk actions * * @param array $bulk_actions No index bulk actions. * * @return array $bulk_actions */ function seopress_bulk_actions_noindex( $bulk_actions ) { $bulk_actions['seopress_noindex'] = __( 'Enable noindex', 'wp-seopress' ); return $bulk_actions; } /** * No index bulk action handler * * @param string $redirect_to Redirect to. * @param string $doaction Do action. * @param array $post_ids Post IDs. * * @return string $redirect_to */ function seopress_bulk_action_noindex_handler( $redirect_to, $doaction, $post_ids ) { if ( 'seopress_noindex' !== $doaction ) { return $redirect_to; } foreach ( $post_ids as $post_id ) { // Perform action for each post/term. update_post_meta( $post_id, '_seopress_robots_index', 'yes' ); update_term_meta( $post_id, '_seopress_robots_index', 'yes' ); } $redirect_to = add_query_arg( 'bulk_noindex_posts', count( $post_ids ), $redirect_to ); return $redirect_to; } add_action( 'admin_notices', 'seopress_bulk_action_noindex_admin_notice' ); /** * No index bulk action admin notice * * @return void */ function seopress_bulk_action_noindex_admin_notice() { if ( ! empty( $_REQUEST['bulk_noindex_posts'] ) ) { $count = intval( $_REQUEST['bulk_noindex_posts'] ); echo '<div id="message" class="updated fade"><p>'; echo esc_html( sprintf( /* translators: %s number of posts set to noindex */ _n( '%s post to noindex.', '%s posts to noindex.', $count, 'wp-seopress' ), number_format_i18n( $count ) ) ); echo '</p></div>'; } } /** * Index bulk actions * * @param array $bulk_actions Index bulk actions. * * @return array $bulk_actions */ function seopress_bulk_actions_index( $bulk_actions ) { $bulk_actions['seopress_index'] = __( 'Enable index', 'wp-seopress' ); return $bulk_actions; } /** * Index bulk action handler * * @param string $redirect_to Redirect to. * @param string $doaction Do action. * @param array $post_ids Post IDs. * * @return string $redirect_to */ function seopress_bulk_action_index_handler( $redirect_to, $doaction, $post_ids ) { if ( 'seopress_index' !== $doaction ) { return $redirect_to; } foreach ( $post_ids as $post_id ) { // Perform action for each post. delete_post_meta( $post_id, '_seopress_robots_index', '' ); delete_term_meta( $post_id, '_seopress_robots_index', '' ); } $redirect_to = add_query_arg( 'bulk_index_posts', count( $post_ids ), $redirect_to ); return $redirect_to; } add_action( 'admin_notices', 'seopress_bulk_action_index_admin_notice' ); /** * Index bulk action admin notice * * @return void */ function seopress_bulk_action_index_admin_notice() { if ( ! empty( $_REQUEST['bulk_index_posts'] ) ) { $count = intval( $_REQUEST['bulk_index_posts'] ); echo '<div id="message" class="updated fade"><p>'; echo esc_html( sprintf( /* translators: %s number of posts set to index */ _n( '%s post to index.', '%s posts to index.', $count, 'wp-seopress' ), number_format_i18n( $count ) ) ); echo '</p></div>'; } } /** * No follow bulk actions * * @param array $bulk_actions No follow bulk actions. * * @return array $bulk_actions */ function seopress_bulk_actions_nofollow( $bulk_actions ) { $bulk_actions['seopress_nofollow'] = __( 'Enable nofollow', 'wp-seopress' ); return $bulk_actions; } /** * No follow bulk action handler * * @param string $redirect_to Redirect to. * @param string $doaction Do action. * @param array $post_ids Post IDs. * * @return string $redirect_to */ function seopress_bulk_action_nofollow_handler( $redirect_to, $doaction, $post_ids ) { if ( 'seopress_nofollow' !== $doaction ) { return $redirect_to; } foreach ( $post_ids as $post_id ) { // Perform action for each post/term. update_post_meta( $post_id, '_seopress_robots_follow', 'yes' ); update_term_meta( $post_id, '_seopress_robots_follow', 'yes' ); } $redirect_to = add_query_arg( 'bulk_nofollow_posts', count( $post_ids ), $redirect_to ); return $redirect_to; } add_action( 'admin_notices', 'seopress_bulk_action_nofollow_admin_notice' ); /** * No follow bulk action admin notice * * @return void */ function seopress_bulk_action_nofollow_admin_notice() { if ( ! empty( $_REQUEST['bulk_nofollow_posts'] ) ) { $count = intval( $_REQUEST['bulk_nofollow_posts'] ); echo '<div id="message" class="updated fade"><p>'; echo esc_html( sprintf( /* translators: %s number of posts set to nofollow */ _n( '%s post to nofollow.', '%s posts to nofollow.', $count, 'wp-seopress' ), number_format_i18n( $count ) ) ); echo '</p></div>'; } } /** * Follow bulk actions * * @param array $bulk_actions Follow bulk actions. * * @return array $bulk_actions */ function seopress_bulk_actions_follow( $bulk_actions ) { $bulk_actions['seopress_follow'] = __( 'Enable follow', 'wp-seopress' ); return $bulk_actions; } /** * Follow bulk action handler * * @param string $redirect_to Redirect to. * @param string $doaction Do action. * @param array $post_ids Post IDs. * * @return string $redirect_to */ function seopress_bulk_action_follow_handler( $redirect_to, $doaction, $post_ids ) { if ( 'seopress_follow' !== $doaction ) { return $redirect_to; } foreach ( $post_ids as $post_id ) { // Perform action for each post/term. delete_post_meta( $post_id, '_seopress_robots_follow' ); delete_term_meta( $post_id, '_seopress_robots_follow' ); } $redirect_to = add_query_arg( 'bulk_follow_posts', count( $post_ids ), $redirect_to ); return $redirect_to; } add_action( 'admin_notices', 'seopress_bulk_action_follow_admin_notice' ); /** * Follow bulk action admin notice * * @return void */ function seopress_bulk_action_follow_admin_notice() { if ( ! empty( $_REQUEST['bulk_follow_posts'] ) ) { $count = intval( $_REQUEST['bulk_follow_posts'] ); echo '<div id="message" class="updated fade"><p>'; echo esc_html( sprintf( /* translators: %s number of posts set to follow */ _n( '%s post to follow.', '%s posts to follow.', $count, 'wp-seopress' ), number_format_i18n( $count ) ) ); echo '</p></div>'; } } /** * Enable 301 bulk actions * * @param array $bulk_actions Enable 301 bulk actions. * * @return array $bulk_actions */ function seopress_bulk_actions_redirect_enable( $bulk_actions ) { $bulk_actions['seopress_enable'] = __( 'Enable redirection', 'wp-seopress' ); return $bulk_actions; } /** * Enable 301 bulk action handler * * @param string $redirect_to Redirect to. * @param string $doaction Do action. * @param array $post_ids Post IDs. * * @return string $redirect_to */ function seopress_bulk_action_redirect_enable_handler( $redirect_to, $doaction, $post_ids ) { if ( 'seopress_enable' !== $doaction ) { return $redirect_to; } foreach ( $post_ids as $post_id ) { // Perform action for each post/term. update_post_meta( $post_id, '_seopress_redirections_enabled', 'yes' ); } $redirect_to = add_query_arg( 'bulk_enable_redirects_posts', count( $post_ids ), $redirect_to ); return $redirect_to; } add_action( 'admin_notices', 'seopress_bulk_action_redirect_enable_admin_notice' ); /** * Enable 301 bulk action admin notice * * @return void */ function seopress_bulk_action_redirect_enable_admin_notice() { if ( ! empty( $_REQUEST['bulk_enable_redirects_posts'] ) ) { $count = intval( $_REQUEST['bulk_enable_redirects_posts'] ); echo '<div id="message" class="updated fade"><p>'; echo esc_html( sprintf( /* translators: %s number of redirections set to enabled */ _n( '%s redirection enabled.', '%s redirections enabled.', $count, 'wp-seopress' ), number_format_i18n( $count ) ) ); echo '</p></div>'; } } /** * Disable 301 bulk actions * * @param array $bulk_actions Disable 301 bulk actions. * * @return array $bulk_actions */ function seopress_bulk_actions_redirect_disable( $bulk_actions ) { $bulk_actions['seopress_disable'] = __( 'Disable redirection', 'wp-seopress' ); return $bulk_actions; } /** * Disable 301 bulk action handler * * @param string $redirect_to Redirect to. * @param string $doaction Do action. * @param array $post_ids Post IDs. * * @return string $redirect_to */ function seopress_bulk_action_redirect_disable_handler( $redirect_to, $doaction, $post_ids ) { if ( 'seopress_disable' !== $doaction ) { return $redirect_to; } foreach ( $post_ids as $post_id ) { // Perform action for each post/term. update_post_meta( $post_id, '_seopress_redirections_enabled', '' ); } $redirect_to = add_query_arg( 'bulk_disable_redirects_posts', count( $post_ids ), $redirect_to ); return $redirect_to; } add_action( 'admin_notices', 'seopress_bulk_action_redirect_disable_admin_notice' ); /** * Disable 301 bulk action admin notice * * @return void */ function seopress_bulk_action_redirect_disable_admin_notice() { if ( ! empty( $_REQUEST['bulk_disable_redirects_posts'] ) ) { $count = intval( $_REQUEST['bulk_disable_redirects_posts'] ); echo '<div id="message" class="updated fade"><p>'; echo esc_html( sprintf( /* translators: %s number of redirections set to disabled */ _n( '%s redirection disabled.', '%s redirections disabled.', $count, 'wp-seopress' ), number_format_i18n( $count ) ) ); echo '</p></div>'; } } /** * Add to instant indexing bulk actions * * @param array $bulk_actions Add to instant indexing bulk actions. * * @return array $bulk_actions */ function seopress_bulk_actions_add_instant_indexing( $bulk_actions ) { $bulk_actions['seopress_instant_indexing'] = __( 'Add to instant indexing queue', 'wp-seopress' ); return $bulk_actions; } /** * Add to instant indexing bulk action handler * * @param string $redirect_to Redirect to. * @param string $doaction Do action. * @param array $post_ids Post IDs. * * @return string $redirect_to */ function seopress_bulk_action_add_instant_indexing_handler( $redirect_to, $doaction, $post_ids ) { if ( 'seopress_instant_indexing' !== $doaction ) { return $redirect_to; } if ( ! empty( $post_ids ) ) { $urls = ''; $options = get_option( 'seopress_instant_indexing_option_name' ); $check = isset( $options['seopress_instant_indexing_manual_batch'] ) ? esc_attr( $options['seopress_instant_indexing_manual_batch'] ) : null; foreach ( $post_ids as $post_id ) { // Perform action for each post/term. $urls .= esc_url( get_the_permalink( $post_id ) ) . "\n"; } $urls = $check . "\n" . $urls; $urls = implode( "\n", array_unique( explode( "\n", $urls ) ) ); $options['seopress_instant_indexing_manual_batch'] = $urls; update_option( 'seopress_instant_indexing_option_name', $options ); } $redirect_to = add_query_arg( 'bulk_add_instant_indexing', count( $post_ids ), $redirect_to ); return $redirect_to; } add_action( 'admin_notices', 'seopress_bulk_action_add_instant_indexing_admin_notice' ); /** * Add to instant indexing bulk action admin notice * * @return void */ function seopress_bulk_action_add_instant_indexing_admin_notice() { if ( ! empty( $_REQUEST['bulk_add_instant_indexing'] ) ) { $count = intval( $_REQUEST['bulk_add_instant_indexing'] ); echo '<div id="message" class="updated fade"><p>'; echo esc_html( sprintf( /* translators: %s number of posts added to instant indexing queue */ _n( '%s post added to instant indexing queue.', '%s posts added to instant indexing queue.', $count, 'wp-seopress' ), number_format_i18n( $count ) ) ); echo '</p></div>'; } } } if ( 'upload.php' === $pagenow ) { add_filter( 'bulk_actions-upload', 'seopress_bulk_actions_alt_text' ); /** * Bulk action to generate alt text for images * * @param array $bulk_actions Bulk actions. * * @return array $bulk_actions */ function seopress_bulk_actions_alt_text( $bulk_actions ) { $bulk_actions['seopress_alt_text'] = __( 'Generate alt text from filename', 'wp-seopress' ); return $bulk_actions; } add_filter( 'handle_bulk_actions-upload', 'seopress_bulk_actions_alt_text_handler', 10, 3 ); /** * Bulk action to generate alt text for images * * @param string $redirect_to Redirect to. * @param string $doaction Do action. * @param array $post_ids Post IDs. * * @return string $redirect_to */ function seopress_bulk_actions_alt_text_handler( $redirect_to, $doaction, $post_ids ) { if ( 'seopress_alt_text' !== $doaction ) { return $redirect_to; } foreach ( $post_ids as $post_id ) { seopress_auto_image_attr( $post_id, true ); } $redirect_to = add_query_arg( 'bulk_alt_text', count( $post_ids ), $redirect_to ); return $redirect_to; } add_action( 'admin_notices', 'seopress_bulk_actions_alt_text_notice' ); /** * Bulk action to generate alt text for images * * @return void */ function seopress_bulk_actions_alt_text_notice() { if ( ! empty( $_REQUEST['bulk_alt_text'] ) ) { $count = intval( $_REQUEST['bulk_alt_text'] ); echo '<div id="message" class="updated fade"><p>'; echo esc_html( sprintf( /* translators: %s number of media */ _n( '%s alternative text generated from filename.', '%s alternative texts generated from filename.', $count, 'wp-seopress' ), number_format_i18n( $count ) ) ); echo '</p></div>'; } } } // Quick Edit. if ( 'edit.php' === $pagenow ) { add_action( 'quick_edit_custom_box', 'seopress_bulk_quick_edit_custom_box', 10, 2 ); /** * Quick edit custom box * * @param string $column_name Column name. * * @return void */ function seopress_bulk_quick_edit_custom_box( $column_name ) { if ( is_plugin_active( 'admin-columns-pro/admin-columns-pro.php' ) ) { return; } static $print_nonce = true; if ( $print_nonce ) { $print_nonce = false; wp_nonce_field( plugin_basename( __FILE__ ), 'seopress_title_edit_nonce' ); } ?> <div class="wp-clearfix"></div> <fieldset class="inline-edit-col-left"> <div class="inline-edit-col column-<?php echo esc_html( $column_name ); ?>"> <?php switch ( $column_name ) { case 'seopress_title': ?> <h4><?php esc_html_e( 'SEO', 'wp-seopress' ); ?> </h4> <label class="inline-edit-group"> <span class="title"><?php esc_html_e( 'Title tag', 'wp-seopress' ); ?></span> <span class="input-text-wrap"><input type="text" name="seopress_title" /></span> </label> <?php break; case 'seopress_desc': ?> <label class="inline-edit-group"> <span class="title"><?php esc_html_e( 'Meta description', 'wp-seopress' ); ?></span> <span class="input-text-wrap"><textarea cols="18" rows="1" name="seopress_desc" autocomplete="off" role="combobox" aria-autocomplete="list" aria-expanded="false"></textarea></span> </label> <?php break; case 'seopress_tkw': ?> <label class="inline-edit-group"> <span class="title"><?php esc_html_e( 'Target keywords', 'wp-seopress' ); ?></span> <span class="input-text-wrap"><input type="text" name="seopress_tkw" /></span> </label> <?php break; case 'seopress_canonical': ?> <label class="inline-edit-group"> <span class="title"><?php esc_html_e( 'Canonical', 'wp-seopress' ); ?></span> <span class="input-text-wrap"><input type="text" name="seopress_canonical" /></span> </label> <?php break; case 'seopress_noindex': ?> <label class="alignleft"> <input type="checkbox" name="seopress_noindex" value="yes"> <span class="checkbox-title"><?php echo wp_kses_post( __( 'Do not display this page in search engine results / XML - HTML sitemaps <strong>(noindex)</strong>', 'wp-seopress' ) ); ?></span> </label> <?php break; case 'seopress_nofollow': ?> <label class="alignleft"> <input type="checkbox" name="seopress_nofollow" value="yes"> <span class="checkbox-title"><?php echo wp_kses_post( __( 'Do not follow links for this page <strong>(nofollow)</strong>', 'wp-seopress' ) ); ?></span> </label> <?php break; case 'seopress_redirect_enable': ?> <label class="alignleft"> <input type="checkbox" name="seopress_redirections_enabled" value="yes"> <span class="checkbox-title"><?php echo wp_kses_post( __( 'Enable redirection?', 'wp-seopress' ) ); ?></span> </label> <?php break; case 'seopress_redirect_url': ?> <label class="inline-edit-group"> <span class="title"><?php echo wp_kses_post( __( 'New URL', 'wp-seopress' ) ); ?></span> <span class="input-text-wrap"> <input type="text" name="seopress_redirections_value" /> </span> </label> <?php break; default: break; } ?> </div> </fieldset> <?php } } add_action( 'save_post', 'seopress_bulk_quick_edit_save_post', 10, 2 ); /** * Quick edit save post * * @param string $post_id Post ID. */ function seopress_bulk_quick_edit_save_post( $post_id ) { // don't save if Elementor library. if ( isset( $_REQUEST['post_type'] ) && 'elementor_library' === $_REQUEST['post_type'] ) { return $post_id; } // don't save for autosave. if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) { return $post_id; } // dont save for revisions. if ( isset( $_REQUEST['post_type'] ) && 'revision' === $_REQUEST['post_type'] ) { return $post_id; } if ( ! current_user_can( 'edit_posts', $post_id ) ) { return; } $_REQUEST += array( 'seopress_title_edit_nonce' => '' ); if ( ! isset( $_REQUEST['seopress_title_edit_nonce'] ) || ! wp_verify_nonce( sanitize_text_field( wp_unslash( $_REQUEST['seopress_title_edit_nonce'] ) ), plugin_basename( __FILE__ ) ) ) { return; } if ( isset( $_REQUEST['seopress_title'] ) ) { update_post_meta( $post_id, '_seopress_titles_title', sanitize_text_field( wp_unslash( $_REQUEST['seopress_title'] ) ) ); } if ( isset( $_REQUEST['seopress_desc'] ) ) { update_post_meta( $post_id, '_seopress_titles_desc', sanitize_textarea_field( wp_unslash( $_REQUEST['seopress_desc'] ) ) ); } if ( isset( $_REQUEST['seopress_tkw'] ) ) { update_post_meta( $post_id, '_seopress_analysis_target_kw', sanitize_text_field( wp_unslash( $_REQUEST['seopress_tkw'] ) ) ); } if ( isset( $_REQUEST['seopress_canonical'] ) ) { update_post_meta( $post_id, '_seopress_robots_canonical', sanitize_url( wp_unslash( $_REQUEST['seopress_canonical'] ) ) ); } if ( seopress_get_service( 'AdvancedOption' )->getAppearanceNoIndexCol() === '1' ) { if ( isset( $_REQUEST['seopress_noindex'] ) ) { update_post_meta( $post_id, '_seopress_robots_index', 'yes' ); } else { delete_post_meta( $post_id, '_seopress_robots_index' ); } } if ( seopress_get_service( 'AdvancedOption' )->getAppearanceNoFollowCol() === '1' ) { if ( isset( $_REQUEST['seopress_nofollow'] ) ) { update_post_meta( $post_id, '_seopress_robots_follow', 'yes' ); } else { delete_post_meta( $post_id, '_seopress_robots_follow' ); } } } // WP Editor on taxonomy description field. if ( seopress_get_service( 'AdvancedOption' )->getAdvancedTaxDescEditor() === '1' && current_user_can( 'publish_posts' ) ) { /** * Taxonomy description WP editor init * * @return void */ function seopress_tax_desc_wp_editor_init() { global $pagenow; if ( 'term.php' === $pagenow || 'edit-tags.php' === $pagenow ) { remove_filter( 'pre_term_description', 'wp_filter_kses' ); remove_filter( 'term_description', 'wp_kses_data' ); // Disallow HTML Tags. if ( ! current_user_can( 'unfiltered_html' ) ) { add_filter( 'pre_term_description', 'wp_kses_post' ); add_filter( 'term_description', 'wp_kses_post' ); } // Allow HTML Tags. add_filter( 'term_description', 'wptexturize' ); add_filter( 'term_description', 'convert_smilies' ); add_filter( 'term_description', 'convert_chars' ); add_filter( 'term_description', 'wpautop' ); } } add_action( 'init', 'seopress_tax_desc_wp_editor_init', 100 ); /** * Taxonomy description WP editor. * * @param string $tag Tag. * * @return void */ function seopress_tax_desc_wp_editor( $tag ) { global $pagenow; if ( 'term.php' === $pagenow || 'edit-tags.php' === $pagenow ) { $content = ''; if ( 'term.php' === $pagenow ) { $editor_id = 'description'; } elseif ( 'edit-tags.php' === $pagenow ) { $editor_id = 'tag-description'; } ?> <tr class="form-field term-description-wrap"> <th scope="row"><label for="description"><?php esc_html_e( 'Description', 'wp-seopress' ); ?></label></th> <td> <?php $settings = array( 'textarea_name' => 'description', 'textarea_rows' => 10, ); wp_editor( htmlspecialchars_decode( $tag->description ), 'html-tag-description', $settings ); ?> <p class="description"><?php esc_html_e( 'The description is not prominent by default; however, some themes may show it.', 'wp-seopress' ); ?> </p> </td> <script type="text/javascript"> // Remove default description field. jQuery('textarea#description').closest('.form-field').remove(); </script> </tr> <?php } } $taxonomies = seopress_get_service( 'WordPressData' )->getTaxonomies(); if ( ! empty( $taxonomies ) ) { foreach ( $taxonomies as $key => $value ) { add_action( $key . '_edit_form_fields', 'seopress_tax_desc_wp_editor', 9, 1 ); } } }