Я хотел бы добавить новый столбец в серверной таблице для категорий товаров. Этот столбец будет содержать ссылку «просмотреть категорию» и будет содержать ссылку на страницу www.domain.com/category/category-name.
Я посмотрел документы WordPress, и это код, который я придумал … но он не работает!
function product_cat_cpt_columns($columns) {
$new_columns = array(
'Link' => "Link to page");
return array_merge($columns, $new_columns);
}
add_filter('manage_product_cat_posts_custom_columns' , 'product_cat_cpt_columns');
Есть идеи, как мне это сделать? Я очень ценю вашу помощь!
Вытащить из этого ответ Вы можете добавить столбцы на экран редактирования тегов с помощью следующего кода:
function add_post_tag_columns($columns){
$columns['foo'] = 'Foo';
return $columns;
}
add_filter('manage_edit-product_cat_columns', 'add_post_tag_columns');
function add_post_tag_column_content($content){
$content .= 'Bar';
return $content;
}
add_filter('manage_product_cat_custom_column', 'add_post_tag_column_content');
Мне было удивительно трудно найти решение для такой тривиальной задачи, и я очень благодарен Хельгатевики за ее ответ, который указал мне верное направление. Ее ответ мне не совсем помог, потому что он позволял использовать только одно и то же значение для всех значений столбцов, поэтому я решил опубликовать улучшенную версию здесь.
Проблема была со второй функцией, потому что она не предоставляла способ добавить значение поля, соответствующее текущей категории. Я вырыл Источник Woocommerce (там вы можете найти «product_cat_column», чтобы просмотреть соответствующие части и посмотреть, как это сделано) и выяснить, что этот фильтр принимает 3 параметра, а не 1. Это позволяет указывать конкретное значение в строке, а не одно и то же значение для всех строк, как в ответе Хельгатевики.
Другим недостатком было то, что он поместил бы значение в столбец миниатюры, потому что именно для этого Woocommerce использует этот фильтр.
Итак, вот мой код:
function add_custom_column($columns) {
$columns['foo'] = 'FOO';
$columns['link'] = 'Link to page';
return $columns;
}
add_filter('manage_edit-product_cat_columns', 'add_custom_column');
function category_custom_column_value( $columns, $column, $term_id ) {
if ($column == 'FOO') {
$foo = get_term_meta( $term_id, 'foo', true );
return $foo;
}elseif ($column == 'link') {
$category = get_term_by( 'id', $term_id, 'product_cat' );
$category_link = get_term_link( $category->slug, 'product_cat' );
return '<a href="' . $category_link . '" target="_blank">' . $category_link . '</a>';
}
}
add_filter('manage_product_cat_custom_column', 'category_custom_column_value', 10, 3);
Как видите, первая функция остается прежней, но вторая теперь проверяет имя столбца и возвращает содержимое в зависимости от этого имени. Таким образом, вы можете получить любую мета-категорию и сделать это для любого количества столбцов.