問題描述

是否可以設置”dummy” 頁面 – 僅顯示在頁面列表中的頁面標題,以及不可編輯且沒有插件的頁面?

這更像是一個假設的問題,因為我不知道從哪裏開始代碼或確定最好的方式。

我想選擇在頁面列表中設置這樣的父/子層次結構,以便子頁面位於父項下,但父頁面只是佔位符,而不是真實頁面。

原因:對於在 WordPress 中沒有很多經驗的用户,組織父/子層次結構中的頁面 (特別是有大量頁面) 非常有用,以便相關頁面更有條理地在頁面列表中。如果子頁面組織在父級下方,用户也可以可視化構建菜單。問題是父頁面可以編輯,而不是已建立的頁面內容的一部分,根據我的經驗,這會導致用户混淆。

我可以使用一個功能來刪除特定頁面的編輯器,並使用 robots.txt 中的 entires 來不對虛擬父項進行索引,但這意味着更改新的父項。那個父母頁面仍然有一個 s lug 聲,即使被阻止的機智

那麼有沒有辦法創建一個創建頁面標題並具有分配子頁面的功能的功能,但是父頁面不可打開,不可編輯,並且沒有 s??

最佳解決方案

OK 這裏是我的嘗試,它是相當黑客,最終我無法刪除父項目的鏈接/顏色,但父鏈接將無法正常工作。所以這有用。

首先創建一個 CPT,並設置以下參數:

$args = array(
        'hierarchical'        => true,
        'public'              => false,
        'show_ui'             => true,
        'show_in_menu'        => true,
        'capability_type'     => 'post',
        'supports'            => array( 'title','page-attributes' ),
    );

根據需要填寫其餘的內容,這將使您能夠在管理員中顯示一個父帖子/頁面,但不在前端,它還允許通過 page-attributes 進行父功能。

現在我們可以拋出一個過濾器,刪除父級的小型”edit”,”view” 和”trash” 鏈接。

function wpse_95518($actions) {

    global $post;

    //rename this to your CPT
    if ($post->post_type =="parent"){
        // check if it's a parent
        if ( ! (is_post_type_hierarchical('parent') && $post->post_parent )) {

            unset( $actions['inline hide-if-no-js']);
            unset( $actions['trash'] );
            unset( $actions['view'] );
            unset( $actions['edit'] );
        }
        return $actions;
    }
    return $actions;
}

add_filter('page_row_actions', 'wpse_95518');

現在事情有點時髦,刪除父標題鏈接功能來編輯帖子。

function wpse_removetitle_95518($action){

    global $post;

    if ($post->post_type =="parent"){
        if ( is_post_type_hierarchical('parent') && $post->post_parent ) {
            return $action;
        }else{
            return '#'; //just in case
        }
    }
    return $action;
 }
add_filter( 'get_edit_post_link', 'wpse_removetitle_95518');

現在 CPT 的父項不應該通過管理員中的鏈接進行編輯,它將顯示為 edit.php?post_type=parent#,但是孩子們將會正常。

缺點是,父項目仍然是藍色鏈接而不是黑色文本,我找不到任何簡單的方法來從標題中刪除鏈接或添加自定義 CSS,以通過 javascript 來擴展 WP List Table

您可以使用 the_title 過濾器更改父標題,但通過上述條件將其設置為 NULL 仍然顯示< a href=..>

也可以使用 is_post_type_hierarchical 過濾器來簡化所有這些操作。

Github link to Table Class 代碼的標題。

參考文獻

注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。