Об’єднати два користувацькі типи публікацій в одну сторінку адміністратора?


9

Я будую сайт із чотирма типовими публікаціями. Щоб полегшити ситуацію для нашого клієнта / адміністратора, мені цікаво, чи є спосіб об’єднати ці користувацькі типи публікацій у один список у бекенді? Наприклад, якщо ви переглядаєте звичайну сторінку адміністратора за допомогою резервного списку зі списком та стовпцями публікацій, чи може така сторінка містити ще 3 типи публікацій для зручного сортування / пошуку?

Я не можу поєднати CPT в одну, вони повинні залишатися окремими поза однією сторінкою "перегляду" в області адміністратора, якщо це можливо.

Будь-які думки, як це зробити ?? Або навіть з чого почати шукати / думати, як це розвивати?


1
Можна, можливо, поглянути на використання 1 CPT, а потім створити власну систематику з двома термінами, що розділяють пости в єдиному CPT. Потім можна виконати деяку логіку у верхній частині файлів шаблонів на передньому кінці, щоб відправити відвідувачів до іншого шаблону на основі умов / податку
Sy Holloway

Відповіді:


2

Лише відправна точка, оскільки, безумовно, питання виникнуть під час подальшого розвитку. Наприклад, зараз функція пошуку порушується, оскільки вона очікує рядок (post_type) і отримує масив.

Щоб перелічити більше одного типу публікацій на екрані "Повідомлення", ми підключаємо pre_get_postsзапит і змінюємо його. У цьому тесті публікації, сторінки та продукти будуть відображені разом на екрані "Повідомлення" ( http://example.com/wp-admin/edit.php).

add_action( 'pre_get_posts', 'join_cpt_list_wspe_113808' );

function join_cpt_list_wspe_113808( $query ) 
{
    // If not backend, bail out
    if( !is_admin() )
        return $query;

    // Detect current page and list of CPTs to be shown in Dashboard > Posts > Edit screen
    global $pagenow;
    $cpts = array( 'post', 'page', 'product' );

    if( 'edit.php' == $pagenow && ( get_query_var('post_type') && 'post' == get_query_var('post_type') ) )
        $query->set( 'post_type', $cpts );

    return $query;
}

Допоміжний код, щоб показати стовпець з кожним поштовим повідомленням Типом:

add_filter( 'manage_edit-post_columns', 'add_cpt_column_wspe_113808' );
foreach( array( 'post', 'page', 'product' ) as $cpt )
    add_action( "manage_{$cpt}_posts_custom_column", 'show_cpt_column_wspe_113808', 10, 2 );

function add_cpt_column_wspe_113808( $columns ) 
{
    $columns[ 'cpt' ] = 'Post Type';
    return $columns;
}

function show_cpt_column_wspe_113808( $column_name, $post_id ) 
{
    if ( 'cpt' != $column_name )
        return;
    echo get_post_type( $post_id );
}

0

Я рекомендую для цього редактор меню адміністратора pro. Я посилаюсь на це внизу.

Цікаво. У певному проекті, над яким я працював, у мене було декілька CPT (користувацькі типи публікацій), які були пов’язані між собою. Розділ був "Інформаційний центр", і вони хотіли, щоб прес-релізи, "Білі дописи", "Відгуки" і т.д. були в межах інформаційного центру. На передньому кінці створити це було просто. На задньому кінці ми хотіли, щоб він логічно вписався разом. Більшість типів користувальницької пошти були встановлені як CPT через певний вміст (метафайли) та вимоги до макета. У нас, начебто, близько 20 CPT.

З огляду на це, ми використовували плагін редактора адміністратора, щоб видалити пов'язані CPT з інформаційного центру із заднього меню, а потім створили меню "Інформаційний центр" із відповідними посиланнями CPT в межах. Хоча всі вони здавалися поєднаними, вони не були.

Ось посилання на плагін: http://adminmenueditor.com/ спробуйте також демонстрацію.


Як ви створили посилання "Інформаційний центр"?
frnhr
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.