Вопрос или проблема
Мне нужно реализовать редирект на фронтенде и бэкенде после удаления конкретного поста с помощью get_delete_post_link(). Какой хук я могу использовать? Любые советы будут полезны.
Что-то подобное:
<?php echo wp_login_url( $redirect ); ?>
Мне нужно перенаправить на страницу фронтенда после удаления поста, так же, как это делает wp_login_url.
Как сказал Барри, мой код может выглядеть следующим образом:
add_filter( 'get_delete_post_link', 'some_function', 20 );
function some_function() {
wp_redirect( get_permalink() );
exit;
}
Предполагается, что get_permalink получит текущую страницу, где вызывается get_delete_post_link. Есть ли какой-то лучший способ для этого?
Есть фильтр, к которому вы можете подключиться.
apply_filters( 'get_delete_post_link', wp_nonce_url( $delete_link, "$action-{$post->post_type}_{$post->ID}" ), $post->ID, $force_delete );
Проверьте исходную функцию здесь: http://core.trac.wordpress.org/browser/tags/3.4.1/wp-includes/link-template.php#L954
Не могу дать больше советов, не видя ваш код.
Редактирование:
Это не очень красиво, но вы можете сделать так
add_filter( 'get_delete_post_link', 'some_function', 20 );
function some_function() {
wp_redirect( home_url("https://wordpress.stackexchange.com/") );
exit;
}
Ответ или решение
Для реализации редиректа на исходную страницу после удаления поста с использованием функции get_delete_post_link()
, вы можете воспользоваться подходом, основанным на хуках в WordPress. В данной ситуации ключевым моментом является правильное использование фильтра get_delete_post_link
, который позволит вам модифицировать ссылку на удаление поста.
1. Использование Хуков
Когда вы хотите перенаправлять пользователя на определенную страницу после удаления поста, вам необходимо перехватить событие, связанное с удалением поста. В WordPress это можно сделать с помощью действия wp_trash_post
или before_delete_post
.
2. Пример Реализации
Ниже представлен пример кода, который вы можете интегрировать в ваш сайт на WordPress. Этот код использует hook before_delete_post
, чтобы выполнить редирект на нужную страницу после удаления поста:
add_action('before_delete_post', 'redirect_after_delete_post');
function redirect_after_delete_post($post_id) {
// Получаем URL предыдущей страницы (или другую целевую страницу)
$redirect_url = site_url(); // Здесь вы можете указать любой URL
// Добавляем подтверждение на удаление через nonce
if ( isset($_GET['_wpnonce']) && wp_verify_nonce($_GET['_wpnonce'], 'delete-post_' . $post_id) ) {
// Выполняем редирект
wp_redirect($redirect_url);
exit;
}
}
3. Использование Фильтра get_delete_post_link
Если вы хотите модифицировать саму ссылку на удаление, чтобы она вела на целевую страницу, вы можете использовать фильтр get_delete_post_link
. Пример кода представлен ниже:
add_filter('get_delete_post_link', 'custom_get_delete_post_link', 10, 2);
function custom_get_delete_post_link($link, $post_id) {
// Здесь вы можете изменить URL на желаемый
$redirect_url = home_url(); // URL для редиректа
// Изменяем ссылку на удаление
return wp_nonce_url($link . '&redirect_to=' . urlencode($redirect_url), 'delete-post_' . $post_id);
}
4. Заключение
При реализации редиректа после удаления поста используйте соответствующие хуки и фильтры для достижения желаемого поведения. Рассмотренные методы гарантируют, что пользователи будут перенаправлены на указанный вами ресурс, что улучшит пользовательский опыт вашего сайта. Не забудьте протестировать реализацию на стационарной версии перед выходом на продакшен, чтобы убедиться в её корректной работе.