Add_filter для добавления нового столбца в таблицу атрибутов продукта Woocommerce (страница добавления / редактирования атрибутов)

Я хотел бы добавить новый столбец в таблицу атрибутов на странице добавления / редактирования атрибутов в администраторе Woocommerce / Wordpress, используя команду Wordpress / PHP add_filter.

Для справки, чтобы добавить столбцы в админке WordPress в таблицу добавления / добавления всех продуктов Woocommerce, работает следующий фильтр:

add_filter( 'manage_edit-product_columns', 'add_product_column', 10, 1 )

Страница "Все продукты":

wp-admin / edit.php? post_type = product

и я вижу, что add_filter следует шаблону:

manage_edit-{POST_TYPE}_columns

Я не могу найти или решить, какой фильтр должен делать то же самое на странице добавления / редактирования атрибутов Woocommerce. URL страницы для этого:

wp-admin / edit.php? post_type = product & page = product_attributes

Я экспериментировал с различными комбинациями, используя рабочий фильтр для страницы «Все продукты», но я не понимаю, как использовать add_filter, когда URL-адрес содержит как тип сообщения, так и страницу.

Надеюсь, я ясно это объяснил. Я много искал ответ как здесь, так и в Google, поэтому, если есть дубликат, я действительно не нашел ничего близкого к тому, что я ищу.

Заранее спасибо!


person Mike A    schedule 14.01.2021    source источник


Ответы (2)


Вы могли бы, но я не рекомендую, злоупотреблять этим текстовым фильтром

что-то вроде этого

add_filter('gettext', 'my_custom_column_function', 1, 2);

function my_custom_column_function($text, $domain=""){
 if($domain === 'woocommerce' && $text === 'Order by'){
   $text = $text . "</th><th>My Column Name";
 } else if($domain === 'woocommerce' && ($text === 'Name' || $text === 'Name (numeric)' || 
 $text === 'Term ID' || $text === 'Custom ordering')){
   // Some code here to create the output as text string
   $example = 1 + 2;
   $text = $text . "</td><td>" . $example;
 }
 return $text;
}

Таким образом можно разместить столбец только перед или после столбца «Порядок по», и я не знаю, какая информация доступна в коде для использования в выходных данных, поскольку это очень хакерский способ сделать что-то Я не рекомендую использовать этот метод

person Jasper B    schedule 18.01.2021
comment
Джаспер, мне нравится этот вариант. Может быть, хакерский, но похоже, что Woocommerce уже хакерский в этом аспекте для использования фиксированной таблицы. И лучше, чем создание нового файла Woocommerce, который нужно будет повторно загружать при каждом обновлении. Я отмечу это как ответ, отметив ваше нежелание - person Mike A; 14.02.2021

Я не думаю, что это возможно, я быстро взглянул на исходный код woocommerce. Функция, которая выводит список, о котором вы говорите, находится в строке 296 файла includes / admin / class-wc-admin-attributes.php и выводит статический макет столбца.

woocommerce / woocommerce / blob / aa89afcf957beb6a387ad7d5d36fd7d95b3a353b / includes / admin / class-wc-admin-attributes.php

person Jasper B    schedule 14.01.2021
comment
Привет, Джаспар. Ах я вижу. Спасибо, что посмотрели. Да, я вижу этот статический код. Я мог бы поэкспериментировать с функциями PHP Dom, хотя это, вероятно, не лучший способ справиться с этими вещами. Судя по тому, что вы видели, был ли вообще какой-нибудь фильтр для этой страницы? - person Mike A; 14.01.2021