You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
83 lines
2.2 KiB
83 lines
2.2 KiB
<?php |
|
/** |
|
* WPSEO plugin file. |
|
* |
|
* @package WPSEO\Frontend |
|
*/ |
|
|
|
/** |
|
* Class WPSEO_Remove_Reply_To_Com. |
|
* |
|
* @since 7.0 |
|
*/ |
|
class WPSEO_Remove_Reply_To_Com implements WPSEO_WordPress_Integration { |
|
|
|
/** |
|
* Registers the hooks necessary to handle removing ?replytocom. |
|
* |
|
* @since 7.0 |
|
* |
|
* @return void |
|
*/ |
|
public function register_hooks() { |
|
if ( $this->clean_reply_to_com() ) { |
|
add_filter( 'comment_reply_link', array( $this, 'remove_reply_to_com' ) ); |
|
add_action( 'template_redirect', array( $this, 'replytocom_redirect' ), 1 ); |
|
} |
|
} |
|
|
|
/** |
|
* Removes the ?replytocom variable from the link, replacing it with a #comment-<number> anchor. |
|
* |
|
* @todo Should this function also allow for relative urls ? |
|
* |
|
* @param string $link The comment link as a string. |
|
* |
|
* @return string The modified link. |
|
*/ |
|
public function remove_reply_to_com( $link ) { |
|
return preg_replace( '`href=(["\'])(?:.*(?:\?|&|&)replytocom=(\d+)#respond)`', 'href=$1#comment-$2', $link ); |
|
} |
|
|
|
/** |
|
* Redirects out the ?replytocom variables. |
|
* |
|
* @since 1.4.13 |
|
* @return boolean True when redirect has been done. |
|
*/ |
|
public function replytocom_redirect() { |
|
if ( isset( $_GET['replytocom'] ) && is_singular() ) { |
|
$url = get_permalink( $GLOBALS['post']->ID ); |
|
$hash = sanitize_text_field( wp_unslash( $_GET['replytocom'] ) ); |
|
$query_string = ''; |
|
if ( isset( $_SERVER['QUERY_STRING'] ) ) { |
|
$query_string = remove_query_arg( 'replytocom', sanitize_text_field( wp_unslash( $_SERVER['QUERY_STRING'] ) ) ); |
|
} |
|
if ( ! empty( $query_string ) ) { |
|
$url .= '?' . $query_string; |
|
} |
|
$url .= '#comment-' . $hash; |
|
|
|
$front = WPSEO_Frontend::get_instance(); |
|
$front->redirect( $url, 301 ); |
|
|
|
return true; |
|
} |
|
|
|
return false; |
|
} |
|
|
|
/** |
|
* Checks whether we can allow the feature that removes ?replytocom query parameters. |
|
* |
|
* @return bool True to remove, false not to remove. |
|
*/ |
|
private function clean_reply_to_com() { |
|
/** |
|
* Filter: 'wpseo_remove_reply_to_com' - Allow disabling the feature that removes ?replytocom query parameters. |
|
* |
|
* @param bool $return True to remove, false not to remove. |
|
*/ |
|
return (bool) apply_filters( 'wpseo_remove_reply_to_com', true ); |
|
} |
|
}
|
|
|