Как сохранить данные модели при создании основной темы в WordPress?

Хорошо, так что я возиться с позвоночником в первый раз. Я думаю, что я в значительной степени охватил все основы логики frontend, но я никогда не был хорош в логике и кодировании backend.

Я работаю с wordpress и создаю тему, используя магистраль. Мое понимание заключается в том, что пока я настраиваю страницу шаблона, которая имеет правильные контейнеры, в которых будет отображаться мой основной код, тот факт, что это тема wordpress, а не собственное приложение, не должен действительно что-то менять на фронтенде.

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

Я не уверен во всем процессе сохранения данных. Я знаю, что мне нужно дать атрибуту модели ‘urlRoot’ строку, но я не знаю, какой должна быть эта строка, и что происходит после этого.

Может ли кто-то объяснить весь процесс, особенно с точки зрения того, как это сделать с WordPress. (я наткнулся на плагин WP REST API, который, как я думаю, помогает, хотя я точно не знаю, как.)

РЕДАКТИРОВАТЬ

В конце концов, я предполагаю, что моя проблема была связана с аутентификацией при попытке получить доступ к базе данных, поскольку textResponse просто возвращал весь HTML для текущей страницы, на которой я был, вероятно, из-за того, что он не проник в базу данных и был перенаправлен обратно на страницу.

Погуглив некоторое время, я наткнулся на это . Вместо того, чтобы изобретать колесо, я установил этот плагин и следовал инструкциям по установке и low, и вот он работал в значительной степени из коробки. Если вы пытаетесь построить магистральную тему, я предлагаю использовать клиент WP-API JS плагин с WP REST API плагин. Кажется, охватывает все.

1 ответ

  1. Как выставить содержимое блога WordPress через API?

    WP REST API кажется хорошим способом начать. Есть много вариантов, и он предоставляет все, что вам нужно.

    Обратите внимание, что он называется WordPress REST API (Версия 2) в wordpress.org каталог плагинов .

    Вы можете проверить, что плагин работает, перейдя к:

    http://www.example.com/wp-json/wp/v2/
    

    Он должен выводить всю информацию в блоге в виде большого дампа JSON.

    Вы также можете проверить, что он работает для других конечных точек, таких как post:

    http://www.example.com/wp-json/wp/v2/posts
    

    Существует основной плагин для API WP REST, который работает из коробки.

    Как общаться с API?

    Это простой пример использования магистрали без какого-либо плагина. Если вы хотите знать, как использовать плагин, см. документацию для него.

    Так как он предлагает много аргументов, которые могут быть переданы в URL, я сделал небольшую коллекцию и пример того, как он может быть использован.

    var API_ROOT = '/wp-json/wp/v2/',
        DEFAULT_API_ARGS = ['context' /* etc. */ ];
    
    var WordPressCollection = Backbone.Collection.extend({
        constructor: function(models, options) {
            options = options || {};
            this.apiArgs = _.union(DEFAULT_API_ARGS, this.apiArgs, options.apiArgs);
            this.args = _.extend({}, this.args, this.getApiArgs(options));
    
            WordPressCollection.__super__.constructor.apply(this, arguments);
        },
    
        getApiArgs: function(obj) {
            return _.pick(obj, this.apiArgs);
        },
    
        fetch: function(options) {
            options = options || {};
            options.data = _.extend({}, this.args, this.getApiArgs(options), options.data);
            return WordPressCollection.__super__.fetch.call(this, options);
        },
    });
    

    И использовать его:

    var CommentCollection = WordPressCollection.extend({
        url: API_ROOT + 'comments',
        // all the arguments to look for in the passed options
        apiArgs: ['page', 'per_page', 'post' /* etc. */ ],
    });
    
    var myPostComments = new CommentCollection(null, {
        post: 23 // id
    });
    
    console.log(myPostComments.url());
    
    myPostComments.fetch({ page: 2 });
    

    fetchСледует сделать GETзапрос к:

    /wp-json/wp/v2/comments?post=23&page=2
    

    И с этого момента, WP REST API плагин берет под контроль. Он возвращает новый массив JSON закодированных объектов комментариев в теле ответа.

    Это должно выглядеть примерно так:

    WP REST API комментарии ответ

    Магистраль автоматически анализирует полученный JSON, поэтому вам не нужно беспокоиться об этом, и вам просто нужно продолжать и использовать его:

    myPostComments.each(function(comment) {
        console.log(comment.get('author_name'));
    });
    

    Тогда сохранение нового комментария является вопросом вызова:

    // check the doc for the comment object details
    myPostComments.create({
        post: 23,
        content: "my new comment",
        /* etc. */
    });
    

    И это было бы POSTпросьбой /wp-json/wp/v2/comments.