Объединить два пользовательских типа сообщений в одну страницу администратора?


9

Я строю сайт с 4 пользовательскими типами постов. Чтобы облегчить задачу нашему клиенту / администратору, мне интересно, есть ли способ объединить эти пользовательские типы записей в один список в серверной части? Например, если вы посмотрите на обычную административную страницу бэкэнда со списком и столбцами сообщений, может ли такая страница использовать три других типа сообщений для легкой сортировки / поиска?

Я не могу объединить 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

Я бы порекомендовал для этого Admin Menu Editor pro. Я буду ссылаться на это внизу.

Интересно. В одном проекте, над которым я работал, у меня было несколько CPT (пользовательских типов записей), которые были отчасти связаны между собой. Раздел назывался «Информационный центр», и они хотели, чтобы пресс-релизы, официальные документы, отзывы и т. Д. Были в рамках информационного центра. На переднем конце создать это было легко. С другой стороны, мы хотели, чтобы это тоже логически совпало. Большинство пользовательских типов записей были установлены в качестве CPT из-за определенного содержимого (метафайлы) и требований макета. В итоге мы получили около 20 CPT.

Тем не менее, мы использовали плагин редактора администратора, чтобы удалить связанные CPT Инфоцентра из внутреннего меню, а затем создали меню «Инфо Центр» со связанными ссылками CPT внутри. Хотя все они казались объединенными, это не так.

Вот ссылка на плагин: http://adminmenueditor.com/ тоже попробуйте демо.


Как вы создали ссылку «Информационный центр»?
frnhr
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.