CSS HTML PHP
/**
* 1. JavaScript: добавляет URL текущей страницы в AJAX-запросы формы
*/
add_action( 'wp_footer', 'puls_saytov_inject_page_url_script' );
function puls_saytov_inject_page_url_script() {
if ( ! is_singular() ) return;
?>
<script>
(function() {
var pageUrl = window.location.href;
var origSend = XMLHttpRequest.prototype.send;
XMLHttpRequest.prototype.send = function(body) {
if (typeof body === 'string' && body.indexOf('puls_saytov_page_url') === -1) {
body += '&puls_saytov_page_url=' + encodeURIComponent(pageUrl);
}
origSend.call(this, body);
};
var origFetch = window.fetch;
window.fetch = function(input, init) {
init = init || {};
if (init.body) {
if (typeof init.body === 'string' && init.body.indexOf('puls_saytov_page_url') === -1) {
init.body += '&puls_saytov_page_url=' + encodeURIComponent(pageUrl);
} else if (init.body instanceof URLSearchParams && !init.body.has('puls_saytov_page_url')) {
init.body.append('puls_saytov_page_url', pageUrl);
} else if (init.body instanceof FormData && !init.body.has('puls_saytov_page_url')) {
init.body.append('puls_saytov_page_url', pageUrl);
}
}
return origFetch.call(this, input, init);
};
})();
</script>
<?php
}
/**
* 2. PHP: дописывает URL карточки в конец письма
*/
add_filter( 'wp_mail', 'puls_saytov_append_item_url_to_email' );
function puls_saytov_append_item_url_to_email( $args ) {
$page_url = '';
if ( ! empty( $_POST['puls_saytov_page_url'] ) ) {
$page_url = esc_url_raw( $_POST['puls_saytov_page_url'] );
}
if ( empty( $page_url ) ) {
$page_url = wp_get_referer();
}
if ( empty( $page_url ) && ! empty( $_SERVER['HTTP_REFERER'] ) ) {
$page_url = esc_url_raw( $_SERVER['HTTP_REFERER'] );
}
if ( empty( $page_url ) ) {
$keys = array( 'item_id', 'postId', 'post_id', 'post_ID', 'id', 'itemId', 'postID' );
foreach ( $keys as $key ) {
if ( ! empty( $_POST[ $key ] ) ) {
$pid = intval( $_POST[ $key ] );
if ( $pid > 0 ) {
$permalink = get_permalink( $pid );
if ( $permalink ) {
$page_url = $permalink;
break;
}
}
}
}
}
if ( empty( $page_url ) ) {
return $args;
}
if ( isset( $args['message'] ) ) {
$args['message'] .= "\n\nСсылка на услугу: " . $page_url;
}
return $args;
}
