Расширение WordPress XML-RPC для включения пользовательских типов записей и таксономий

#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 в качестве таксономии, вы можете сделать одно из двух:

  1. В моей ситуации XML-RPC просто должен был работать как по умолчанию, за исключением изменения post на blog , categories на blog_categories и т.д. Я просто заменил литералы, и мой новый XML-RPC позволил мне использовать Live Writer как обычный, но он будет использовать мой пользовательский тип записи и таксономии.
  2. Если вам нужны функции, доступные для работы с несколькими типами записей и таксономиями, вам нужно копнуть немного глубже и переписать функции (в идеале, переписать их для работы с 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!