簡體   English   中英

WordPress自定義URL結構在訪問不存在的頁面時導致奇怪的結果

[英]WordPress Custom URL Structure Causes Weird Results When Visiting Non Existent Page

我們正在用WordPress創建一個網站,並且在永久鏈接結構中需要職位職位類型的唯一ID。 永久鏈接結構如下: http : //headway.xpandcreative.co.uk/jobs/5934-sales-executive-4/

前面的ID是職位ID。 問題是,如果我們轉到以下網址: http : //headway.xpandcreative.co.uk/jobs/5934-sales-executive-4dediejidjiedjiejdiendjeijdejdjie/ ,即使它顯然應該是404,它仍然顯示該作業。

我用於創建此永久鏈接結構的代碼是:

// Rewrite permalink structure
function jobs_rewrite() {
    global $wp_rewrite;
    $queryarg = 'post_type=jobs&p=';
    $wp_rewrite->add_rewrite_tag( '%cpt_id%', '([^/]+)', $queryarg );
    $wp_rewrite->add_permastruct( 'jobs', '/jobs/%cpt_id%/', false );
}
add_action( 'init', 'jobs_rewrite' );

function jobs_permalink( $post_link, $id = 0, $leavename ) {
    global $wp_rewrite;
//     $post = &get_post( $id );
    global $post;
    if ( is_wp_error( $post ) )
        return $post;
        $newlink = $wp_rewrite->get_extra_permastruct( 'jobs' );
        $newlink = str_replace( '%cpt_id%', $post->ID . '-' . $post->post_name, $newlink );
        $newlink = home_url( user_trailingslashit( $newlink ) );
    return $newlink;
}
add_filter('post_type_link', 'jobs_permalink', 1, 3);

請在這里查看網站http://headway.xpandcreative.co.uk/jobs/

有人可以給我一個建議嗎?

謝謝

插件調試這可以幫助您確定哪個重寫規則導致加載作業頁面。 我遇到了類似的問題,並通過使用rewrite_rules_array過濾器刪除和插入重寫規則,以及通過posts_where過濾器來處理posts查詢來解決該問題。 希望能幫助到你。

您有$queryarg = 'post_type=jobs&p=' ,這意味着在您的示例中變成了$queryarg = 'post_type=jobs&p=5934-sales-executive-4'

由於p旨在成為類型為int帖子ID,因此Wordpress會清除輸入內容。

我還沒有搜索確切的完成方式,但是當您嘗試執行以下操作時:

$returnValue = intval('5934-sales-executive-4', 10);

在這種情況下,您將獲得值5934 ,我認為這正在發生。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM