我們有一個帶有自定義主題的WordPress網站,我們正在使用CPT(自定義帖子型別)。
由于某些原因,當我們將CPT的可見性設定為私有時,頁面仍然是公開的,但它是一個完全空的檔案;沒有head資料,沒有body資料,只有一個string(n) "post_title",例如。string(9) "ade184065".
你可以在這里找到一個活生生的例子:
https://www.gozoprime.com/gozo-properties/ade184065/
正如你所看到的,這是一個房產串列網站,當一個房產被售出時,我們將其設定為私有,因為我們仍然希望保留這些資料。
我真的盡了最大努力,試圖找到可能導致這種情況的原因,但經過幾個小時的努力,我沒有任何進展,網上也沒有任何相關的資訊--所以我認為我們與自己的自定義代碼發生了沖突?
禁用所有的插件也沒有解決這個問題。
也許以前有人遇到過這個問題嗎?
注意:我也嘗試過檢測帖子是否為私有,并手動重定向,但無論發生什么,都是在實際屬性頁代碼運行之前發生的。所以在content-single-cpt-name.php中放置這段代碼并不奏效:
// Check post status: Public | Private -> Redirect accordingly
if ( get_post_status ( get_the_ID( ) ) == 'private' ) { ...
非常感謝您的幫助!
uj5u.com熱心網友回復:
你有多種方法可以解決這個問題。由于你沒有提供關于你的cpt的細節,我想說,如果一個帖子有私人狀態,試著重定向用戶。同樣,還有其他方法,但你沒有給我們更多關于你如何設定你的cpt的細節。
在下面的代碼中,我使用template_redirect動作鉤子和wp_safe_redirect來重定向用戶到home_url。請自由改變home_url為你需要重定向用戶的任何網址!
add_action('template_redirect', 'your_theme_private_posts_redirect') 。
function your_theme_private_posts_redirect()
{
if (is_single() && 'private' == get_post_status(get_the_ID() ) ) {
wp_safe_redirect(home_url())。
exit()。
}
代碼放到你的活動主題的functions.php檔案中。剛剛測驗了一下,效果很好!
更新
由于你使用的是自定義主題,可能有其他的重定向會妨礙這個功能的正常執行。因此,你可以在我提供給你的代碼中添加一個優先級,比方說99,希望能解決這個問題,就像這樣:
add_action('template_redirect', 'your_theme_private_posts_redirect', 99) 。
function your_theme_private_posts_redirect()
{
if (is_single() && 'private' == get_post_status(get_the_ID() ) ) {
wp_safe_redirect(home_url())。
exit()。
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/320526.html
標籤:
