#wordpress #xml-rpc
#wordpress #xml-rpc
Вопрос:
Я пытаюсь вставить сообщение с пользовательским типом записи, к которому я также хочу прикрепить пользовательские таксономии. Большинство доступных исправлений устарели, любые применяются только к «xmlrpc.php «. Теперь файл в WordPress, который управляет функцией, является «class-wp-xmlrpc-server.php «. Может кто-нибудь дать мне совет о том, как проанализировать файл? Я бы предпочел добавить фильтр в свой файл темы, а не перезаписывать основные файлы WordPress.
Ответ №1:
Я понимаю, что это старая тема, но я задавался тем же вопросом в последние пару недель и полностью переписал часть этого файла, чтобы работать с тем, что мне было нужно. Для моей реализации у меня есть пользовательский тип записи под названием «блог» с пользовательскими таксономиями под названием «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 не получил такой большой любви, как остальная часть системы. Вы могли бы изучить некоторые фильтры / действия, но я думаю, вам будет проще просто изменить основной файл. Это означает, что ваши изменения будут перезаписаны при обновлении ядра!
Надеюсь, это немного поможет вам и всем, кто хочет сделать то же самое!
Комментарии:
1. Хотя я читаю дополнения 3.4 к XML-RPC (я сделал это в 3.3), и похоже, что они сделали многое, если не все, из того, что я только что сказал. Этот пост может немного опоздать на вечеринку XML-RPC!