Я хотел бы добавить новый столбец во внутреннюю таблицу категорий продуктов. Этот столбец будет содержать ссылку «категория просмотра» и свяжет все со страницей 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');
Любая идея, как я это сделаю? Я очень ценю вашу помощь!
Мне было невероятно сложно найти решение для такой тривиальной задачи, и я очень благодарен Хельгатевикингу за ее ответ, который указал мне в правильном направлении. Ее ответ не совсем сработал для меня, потому что он позволил бы использовать только одно значение для всех значений столбца, поэтому я решил опубликовать улучшенную версию здесь.
Проблема заключалась в второй функции, поскольку она не предоставляла способ добавить значение поля, соответствующее текущей категории. Я вырыл источник 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);
Как вы можете видеть, первая функция остается прежней, но вторая теперь проверяет имя столбца и возвращает содержимое в зависимости от этого имени. Вы можете получить любую категорию мета таким образом и сделать это за столько столбцов, сколько захотите.
Выбрав этот ответ, вы можете добавить столбцы на экран «Редактировать теги» со следующим кодом:
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');