Расширение Wordpress XML-RPC для включения пользовательских типов записей и таксономий - PullRequest
2 голосов
/ 12 октября 2011

Я пытаюсь вставить сообщение с пользовательским типом сообщения, к которому я также хочу прикрепить пользовательские таксономии.Большинство доступных исправлений устарели, все применяются только к «xmlrpc.php».Теперь файл в WordPress, который управляет функцией, является «class-wp-xmlrpc-server.php».Может ли кто-нибудь дать мне совет, как разобрать файл?Я бы предпочел добавить фильтр в мой файл темы, а не перезаписывать файлы ядра Wordpress.

1 Ответ

0 голосов
/ 05 июля 2012

Я понимаю, что это старая тема, но я удивлялся тому же самому в последние пару недель и полностью переписал часть этого файла для работы с тем, что мне было нужно. Для моей реализации у меня есть пользовательский тип поста под названием «блог», с пользовательскими таксономиями, называемыми «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 не получил столько любви, как остальная система. Там есть несколько хуков фильтра / действия, которые вы могли бы исследовать, но я думаю, вам будет проще просто изменить основной файл. Это означает, что ваши модификации будут перезаписаны при обновлении ядра!

Надеюсь, это немного поможет вам и всем, кто хочет сделать то же самое!

...