Я понимаю, что это старая тема, но я удивлялся тому же самому в последние пару недель и полностью переписал часть этого файла для работы с тем, что мне было нужно. Для моей реализации у меня есть пользовательский тип поста под названием «блог», с пользовательскими таксономиями, называемыми «blog_categories» и «blog_tags». Да, немного излишним, но это был эксперимент вроде.
Если вы посмотрите на class-wp-xmlrpc-server.php
, вы заметите, что он немного грязный (в зависимости от используемой версии WP он может быть лучше или хуже). Самым простым способом, который я нашел, чтобы сделать это, ничего не нарушая, было пойти дальше и изменить функции таксономии на общие, а не на категории и опубликовать конкретные. Это включает в себя поиск всех экземпляров wp_get_post_categories
и wp_get_post_tags
и замену их более общими wp_get_object_terms
, а также замену get_categories
на get_terms
. Как только это сработает с использованием categories
и tags
в качестве таксономии, вы можете сделать одну из двух вещей:
- В моей ситуации XML-RPC просто должен был работать как по умолчанию, за исключением изменения
post
на blog
, categories
на blog_categories
и т. Д. Я просто заменил литералы, и мой новый XML-RPC позволил мне использовать Live Writer как обычно, но он будет использовать мой собственный тип записи и таксономии.
- Если вам нужны функции, доступные для работы с несколькими типами записей и таксономиями, вам нужно немного углубиться и переписать функции (в идеале, переписать их для работы с 0-n таксономиями и любыми типами записей). Рассмотрите обратную совместимость, если вы хотите использовать существующее программное обеспечение, такое как Live Writer. Также рассмотрите возможности - если у вас есть пользовательские роли для ваших пользовательских типов записей, вам следует подумать о замене проверок возможностей на что-то вроде:
user_can('edit'_.$post_type, $postid)
.
К сожалению, Wordpress является жертвой эволюционной модели 1 типа, 2 типов записей (страниц), n типов записей (пользовательских), и XML-RPC не получил столько любви, как остальная система. Там есть несколько хуков фильтра / действия, которые вы могли бы исследовать, но я думаю, вам будет проще просто изменить основной файл. Это означает, что ваши модификации будут перезаписаны при обновлении ядра!
Надеюсь, это немного поможет вам и всем, кто хочет сделать то же самое!