我的情況
目前我正在開發一個插件,用於在Wordpress中重定向href網址。最後,我希望插件的工作方式如下:首先,它需要檢查用戶點擊了哪個href。然後檢查數據庫中是否存在該URL(它被稱爲redirect_oude_url
)。如果是這樣,不是更換新網址URL(被稱爲redirect_nieuwe_url
通過連接到新的URL,而不是舊的URL我使用的是CPT稱爲redirect
向用戶發送。如何在Wordpress中以編程方式重定向URL?
。我做了一個子菜單添加一個新的重定向,並禁用了CPT的add_new功能,具有create_post => do_not_allow
的功能。我能夠檢查舊的url是否已經存在,並且基於那個能夠在管理端進行新的重定向或者不可以。
我的問題
我的問題是我如何能夠檢查當頁面/帖子的前端點擊鏈接時,如果它存在於數據庫中,並自動替換舊的u與新的網址?
我的代碼
<?php
function webor_redirect_display() {
?>
<div class="wrap">
<h2>Redirect jouw URL</h2>
</div>
<form method="POST">
<label>Plaats hieronder zowel de oude als de nieuwe URL en druk op: Sla op.<br></label>
<br>
<div class="container_url">
<b>Oude URL:</b>
<br><input type="text" class="redirect_oude_url" name="redirect_oude_url" id="redirect_oude_url" placeholder="Begin met: https://" size="150">
<br><br>
<b>Nieuwe URL:</b>
<br><input type="text" class="redirect_nieuwe_url" name="redirect_nieuwe_url" id="redirect_nieuwe_url" placeholder="Begin met: https://" size="150">
<br><br>
<input type="submit" name="submit_url" value="Sla op" class="button button-primary button-large">
</div>
</form>
<?php
$redirect_array = array(
'post_type' => 'redirect',
'meta_query' => array(
'relation' => 'AND',
array(
'key' => 'redirect_oude_url',
'value' => $_POST['redirect_oude_url'],
), array(
'key' => 'redirect_nieuwe_url',
)
)
);
$redirect_query = new WP_Query($redirect_array);
if ($redirect_query->have_posts()) :
//the loop
while ($redirect_query->have_posts()) : $redirect_query->the_post();
$oude_url = get_post_meta(get_the_ID(), 'redirect_oude_url', true);
$nieuwe_url = get_post_meta(get_the_ID(), 'redirect_nieuwe_url', true);
endwhile;
wp_reset_postdata();
else:
endif;
if (isset ($_POST['submit_url'])) {
//echo '<br> submit clicked';
if (!empty ($_POST['redirect_oude_url'])) {
//echo '<br> filled oude url';
if (!empty ($_POST['redirect_nieuwe_url'])) {
//echo '<br> filled nieuwe url';
$post_url = $_POST['redirect_oude_url'];
//echo '<br>' . $post_url;
if ($post_url == $oude_url){
echo '<br> Er bestaat al een redirect voor deze oude url';
} else {
//echo '<br> niet hetzelfde, maak nieuwe redirect';
//webor_create_redirect();
echo "<strong><h4>Uw redirect is aangemaakt!</h4></strong>";
}
} else {
echo '<br> U bent de nieuwe URL vergeten';
}
} else {
echo '<br> Vul zowel de oude als de nieuwe url in!';
}
}
}//end function
add_shortcode('redirect_display', 'webor_redirect_display');
function webor_create_redirect() {
// Make a new post
$new_redirect = array(
'post_title' => $_POST['redirect_oude_url'] . ' -> ' . $_POST['redirect_nieuwe_url'],
'post_status' => 'publish',
'post_type' => 'redirect',
'meta_input' => array(
'redirect_oude_url' => $_POST['redirect_oude_url'],
'redirect_nieuwe_url' => $_POST['redirect_nieuwe_url'],
)
);
wp_insert_post($new_redirect);
}
?>
您可以使用: wp_redirect($ url); 退出; – dekts
@dekts我如何能夠在每個頁面/帖子前端頁面上實現這一點?需要將這些代碼添加到每個文件中,我可以將其添加到我的插件文件中? – Stan
在@Stan周圍做一些google,並檢查如下內容:https://developer.wordpress.org/reference/functions/wp_redirect/ – dekts