WordPress 'Custom Post Type' установлен на неправильные идентификаторы терминов таксономии - PullRequest
2 голосов
/ 12 апреля 2011

В первую очередь , я должен подчеркнуть, как высоко я ценю любого, кто находит время, чтобы ответить - заранее, спасибо, спасибо, СПАСИБО!

Я чувствую фотографииполезны для объяснения вещей, поэтому для начала приведем иллюстрацию этой проблемы:

http://i.stack.imgur.com/b9OXR.png

Предисловие:

  • Мой сайт содержит около 400 сообщений в соответствии с пользовательским типом записи "dir_listing"
  • Каждая запись "dir_listing" может быть связана с условиями из пользовательской таксономии "категории листинга" и / или пользовательской таксономии "перечисления_региона"
  • У меня есть около 210 терминов «list_category» «Термины и 155» региона листинга »

Проблема в резюме:

При публикацииили Обновление типа записи "dir_listing", иногда идентификаторы терминов записываются в таблицу term_relationships без проблем, а в другое время записываются ошибочно.

Тем не менее, когда я возвращаюсь к редактированию одного из типов записей "dir_listing", флажки для нужных Родительских / Дочерних терминов помечаются правильно.

Действия, которые могут быть связаны?

  • Ряд терминов "перечисление_категории" был перемешан.(Например, термин «Родительский» стал термином «Ребенок», или наоборот, или термин «Ребенок» был перенесен в другого «Родителя».)

  • Термины «Родитель и ребенок» были переименованы безлюбые изменения в типах записей "dir_listing".(Я не думаю, что это имеет значение, поскольку сообщения должны быть связаны с Условиями по ID #)

  • Некоторые родительские условия и дочерние условия могут быть удалены другим администратором.уровень пользователя.Похоже, это также происходит с дочерними терминами таксономии «перечисление_регионов».

Как я исследовал / пытался это исправить:

  • Обширный поиск в WordPress trac (о подобных проблемах не сообщалось)

  • В Google искали такие вещи, как * "wordpress tax_input bug" *, "ошибка идентификатора таксономии wordpress", " ошибка пользовательской таксономии WordPress " и т. Д. И не найдено проблем с соответствием

  • Отключены все плагины, пользовательские изменения и другие таксономии

  • Убедитесь, что входные данные флажка имеют правильную Таксономию в качестве их 'имени' и ID термина в качестве их 'значения'

  • Взломан / wp-admin / includesФайл ядра /post.php, чтобы попытаться исправить это самостоятельно.(Не повезло.)

  • Опубликован вопрос на форуме WordPress "How-To и устранение неполадок"] [3] сегодня утром (без ответов)

  • Сегодня во второй половине дня в Reddit / r / web_design была опубликована проблема (также без ответов)

Я потратил большую часть 8 часов, пытаясь определить причину этого, или если я пропускаю шаг, используя пользовательский запрос MySQL для непосредственного получения списка сообщений, связанных с определенным идентификатором термина.

Опять же, любые мысли или предложения, которые могут у кого-либо возникнуть, ОЧЕНЬ ценятся- Спасибо!

1 Ответ

0 голосов
/ 20 мая 2011

Эта информация может помочь вам понять, как работают term_id и term_taxonomy_id. Похоже, что существует множество условий, которые влияют на конечный результат установки идентификаторов.

См. Полную ссылку здесь: http://phpxref.com/xref/wordpress/wp-includes/taxonomy.php.html#wp_insert_term

Также взгляните на этот билет о необходимости таблицы взаимоотношений постов и некоторых случаях использования.

get_term($term, $taxonomy, $output = OBJECT, $filter = 'raw')   X-Ref
Get all Term data from database by Term ID.

The usage of the get_term function is to apply filters to a term object. It
is possible to get a term object from the database before applying the
filters.

$term ID must be part of $taxonomy, to get from the database. Failure, might
be able to be captured by the hooks. Failure would be the same value as $wpdb
returns for the get_row method.

There are two hooks, one is specifically for each term, named 'get_term', and
the second is for the taxonomy name, 'term_$taxonomy'. Both hooks gets the
term object, and the taxonomy name as parameters. Both hooks are expected to
return a Term object.

'get_term' hook - Takes two parameters the term Object and the taxonomy name.
Must return term object. Used in get_term() as a catch-all filter for every
$term.

'get_$taxonomy' hook - Takes two parameters the term Object and the taxonomy
name. Must return term object. $taxonomy will be the taxonomy name, so for
example, if 'category', it would be 'get_category' as the filter name. Useful
for custom taxonomies or plugging into default taxonomies.

param: int|object $term If integer, will get from database. If object will apply filters and return $term.
param: string $taxonomy Taxonomy name that $term is part of.
param: string $output Constant OBJECT, ARRAY_A, or ARRAY_N
param: string $filter Optional, default is raw or no WordPress defined filter will applied.
return: mixed|null|WP_Error Term Row from database. Will return null if $term is empty. If taxonomy does not

get_term_by($field, $value, $taxonomy, $output = OBJECT, $filter = 'raw')   X-Ref
Get all Term data from database by Term field and data.

Warning: $value is not escaped for 'name' $field. You must do it yourself, if
required.

The default $field is 'id', therefore it is possible to also use null for
field, but not recommended that you do so.

If $value does not exist, the return value will be false. If $taxonomy exists
and $field and $value combinations exist, the Term will be returned.

param: string $field Either 'slug', 'name', or 'id'
param: string|int $value Search for this term value
param: string $taxonomy Taxonomy Name
param: string $output Constant OBJECT, ARRAY_A, or ARRAY_N
param: string $filter Optional, default is raw or no WordPress defined filter will applied.
return: mixed Term Row from database. Will return false if $taxonomy does not exist or $term was not found.

get_term_children( $term_id, $taxonomy )   X-Ref
Merge all term children into a single array of their IDs.

This recursive function will merge all of the children of $term into the same
array of term IDs. Only useful for taxonomies which are hierarchical.

Will return an empty array if $term does not exist in $taxonomy.

param: string $term ID of Term to get children
param: string $taxonomy Taxonomy Name
return: array|WP_Error List of Term Objects. WP_Error returned if $taxonomy does not exist
...