Как правильно извлечь короткий URL-адрес текущей записи в WordPress function.php?

В WordPress function.phpУ меня есть следующий код, чтобы получить короткий URL-адрес текущего сообщения:

add_action('wpcf7_before_send_mail', 'save_cf7_data');
function save_cf7_data($cf)
{
$post_url = 'https://' . $_SERVER[ 'SERVER_NAME' ] . $_SERVER[ 'REQUEST_URI' ];
$post_id = url_to_postid( $post_url );
$post_shorturl = wp_get_shortlink($post_id);
}

Раньше работал без проблем в течение нескольких месяцев. Тем не менее, должны быть некоторые изменения в контактной форме плагина 7 или WordPress, $post_url начинает возвращать URL, как это:

https://example.com/wp-json/contact-form-7/v1/contact-forms/108/feedback

Как правильно получить короткий URL текущего сообщения в этом случае?

1

Решение

Попробуйте этот код:

function save_cf7_data($cf) {
$submission = WPCF7_Submission::get_instance();
$cf_url = $submission->get_meta( 'url' );
$cf_postid = url_to_postid( $cf_url );
$cf_shorturl = wp_get_shortlink($cf_postid);
}

add_action('wpcf7_before_send_mail', 'save_cf7_data');

Посмотреть файл mail.php в исходном коде CF7.

Посмотрите на Специальные почтовые метки, конкретно [_post_url] также.

2

Другие решения

Тогда попробуй так,

add_action('wpcf7_before_send_mail', 'save_cf7_data');
function save_cf7_data($cf)
{
global $wp;
$post_url = home_url(add_query_arg(array(),$wp->request));
$post_id = url_to_postid( $post_url );
$post_shorturl = wp_get_shortlink($post_id);
}
0

я хотел бы использовать тегу get_permalink () для получения URL-адреса сообщения в шаблоне страницы. functions.php может загружаться до глобального $post установлен, не слишком уверен.

РЕДАКТИРОВАТЬ:

О, если вы посмотрите на $post_url вы получили, это на самом деле URL-адрес WordPress Rest API. Так что я думаю, что плагин формы использовался для отправки на исходную страницу, но теперь выбирает использовать WordPress Rest API.

Но ваше решение не является правильным подходом в первую очередь. Поскольку это отправка формы, вы должны сделать дамп $_REQUEST, Могу поспорить, что там есть информация об адресе поста. Если не отправлено по умолчанию, вы, вероятно, можете добавить поле URL-адреса (скорее всего скрытое) в форму плагина.

0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector