Ответы в темах

Просмотр 10 ответов — с 1 по 10 (всего 10)
  • решено

    add_action("rest_insert_user", function (\WP_User $user, $request, $creating) {
    $metas = $request->get_param("meta");
    if (is_array($metas)) {
    foreach ($metas as $name => $value) {
    update_user_meta($user->ID, $name, $value);
    }
    }
    }, 10, 3);

    Похожая проблема — теперь встала задача изменять мета у пользователей, в частности phone

    Сами данные меняются, а мета — нет.

    add_action(«rest_insert_users», — не помогло. (

    Подскажите, в чём может быть дело.

    Автор dvladimirov77

    (@dvladimirov77)

    Подсказали решение, указать мой тип страницы: myhome_listing

    add_action(«rest_insert_myhome_listing», function (\WP_Post $post, $request, $creating) {
    $metas = $request->get_param(«meta»);
    if (is_array($metas)) {
    foreach ($metas as $name => $value) {
    update_post_meta($post->ID, $name, $value);
    }
    }
    }, 10, 3);

    Автор dvladimirov77

    (@dvladimirov77)

    Через листинг такое прилетает:

    object(stdClass)#2 (50) {
    ["id"]=>
    int(15691)
    ["date"]=>
    string(19) "2025-06-08T09:23:09"
    ["date_gmt"]=>
    string(19) "2025-06-08T09:23:09"
    ["guid"]=>
    object(stdClass)#3 (2) {
    ["rendered"]=>
    string(72) "https://wp.q/listing/prodazha_kvartira_4k_1_3_et__v_evpatoriya_0_452250/"
    ["raw"]=>
    string(72) "https://wp.q/listing/prodazha_kvartira_4k_1_3_et__v_evpatoriya_0_452250/"
    }
    ["modified"]=>
    string(19) "2025-06-10T07:01:06"
    ["modified_gmt"]=>
    string(19) "2025-06-10T07:01:06"
    ["password"]=>
    string(0) ""
    ["slug"]=>
    string(50) "prodazha_kvartira_4k_1_3_et__v_evpatoriya_0_452250"
    ["status"]=>
    string(7) "publish"
    ["type"]=>
    string(14) "myhome_listing"
    ["link"]=>
    string(72) "https://wp.q/listing/prodazha_kvartira_4k_1_3_et__v_evpatoriya_0_452250/"
    ["title"]=>
    object(stdClass)#4 (2) {
    ["raw"]=>
    string(6) "112233"
    ["rendered"]=>
    string(6) "112233"
    }
    ["content"]=>
    object(stdClass)#5 (4) {
    ["raw"]=>
    string(2018) "<p>Продается 3 х уровневая, большая квартира (Таунхауз), со своим гаражем, в престижном жилом комплексе "Мойнаки", имеющем свой уникальный парк с краснокнижными деревьями.&nbsp;В квартире 3 выхода, один через гараж; 4 очень просторные, светлые комнаты. На первом этаже прихожая, с/у, огромная кухня - гостинная с дорогой мебелью и встроенной техникой (остается покупателям), гараж,выделена своя територия - зона отдыха. На 2 этаже две большие спальни с балконами, в одной вместительная гардеробная(так же с выходом на балкон), большая прачечная комната с душевой кабинкой и с/у, просторная кладовая комната. На 3 этаже огромный спортзал с выделенной спальной зоной и большая комната с выходом на балкон и своей ванной комнатой(с душевой кабиной и ванной, и с/у). Квартира с автономным отоплением, с дорогой мебелью и техникой, выполнен евро ремонт. Дом находится на закрытой територии, со своими зонами отдыха,детские и спортивные площадки, бассейном и парком, имеются дополнительные места для авто. Все необходимое в шаговой доступности. Один собственник, документы РФ.Торг. Принимается любая форма оплаты.</p>"
    ["rendered"]=>
    string(2050) "

    <p>Продается 3 х уровневая, большая квартира (Таунхауз), со своим гаражем, в престижном жилом комплексе “Мойнаки”, имеющем свой уникальный парк с краснокнижными деревьями.&nbsp;В квартире 3 выхода, один через гараж; 4 очень просторные, светлые комнаты. На первом этаже прихожая, с/у, огромная кухня – гостинная с дорогой мебелью и встроенной техникой (остается покупателям), гараж,выделена своя територия – зона отдыха. На 2 этаже две большие спальни с балконами, в одной вместительная гардеробная(так же с выходом на балкон), большая прачечная комната с душевой кабинкой и с/у, просторная кладовая комната. На 3 этаже огромный спортзал с выделенной спальной зоной и большая комната с выходом на балкон и своей ванной комнатой(с душевой кабиной и ванной, и с/у). Квартира с автономным отоплением, с дорогой мебелью и техникой, выполнен евро ремонт. Дом находится на закрытой територии, со своими зонами отдыха,детские и спортивные площадки, бассейном и парком, имеются дополнительные места для авто. Все необходимое в шаговой доступности. Один собственник, документы РФ.Торг. Принимается любая форма оплаты.</p>
    "
    ["protected"]=>
    bool(false)
    ["block_version"]=>
    int(0)
    }
    ["author"]=>
    int(1)
    ["template"]=>
    string(0) ""
    ["permalink_template"]=>
    string(32) "https://wp.q/listing/%pagename%/"
    ["generated_slug"]=>
    string(6) "112233"
    ["class_list"]=>
    array(8) {
    [0]=>
    string(10) "post-15691"
    [1]=>
    string(14) "myhome_listing"
    [2]=>
    string(19) "type-myhome_listing"
    [3]=>
    string(14) "status-publish"
    [4]=>
    string(6) "hentry"
    [5]=>
    string(20) "myhome_5495-for-sale"
    [6]=>
    string(18) "myhome_14-kvartira"
    [7]=>
    string(22) "myhome_9508-evpatoriya"
    }
    ["myhome_5495"]=>
    array(1) {
    [0]=>
    string(8) "For Sale"
    }
    ["myhome_14"]=>
    array(1) {
    [0]=>
    string(16) "Квартира"
    }
    ["myhome_130"]=>
    array(1) {
    [0]=>
    string(8) "$ 444.10"
    }
    ["myhome_5974"]=>
    array(0) {
    }
    ["myhome_9508"]=>
    array(1) {
    [0]=>
    string(18) "Евпатория"
    }
    ["myhome_15545"]=>
    array(0) {
    }
    ["myhome_5462"]=>
    string(0) ""
    ["myhome_5463"]=>
    string(0) ""
    ["myhome_340"]=>
    string(0) ""
    ["myhome_9694"]=>
    string(0) ""
    ["myhome_9733"]=>
    string(0) ""
    ["myhome_15544"]=>
    string(0) ""
    ["myhome_4661"]=>
    array(0) {
    }
    ["myhome_145"]=>
    string(0) ""
    ["myhome_344"]=>
    string(0) ""
    ["myhome_345"]=>
    object(stdClass)#6 (2) {
    ["url"]=>
    string(0) ""
    ["embed"]=>
    string(0) ""
    }
    ["myhome_3411"]=>
    object(stdClass)#7 (2) {
    ["url"]=>
    string(0) ""
    ["embed"]=>
    string(0) ""
    }
    ["myhome_153"]=>
    object(stdClass)#8 (2) {
    ["address"]=>
    string(0) ""
    ["location"]=>
    bool(false)
    }
    ["myhome_15694"]=>
    string(5) "1 2 3"
    ["_edit_lock"]=>
    string(12) "1749528887:1"
    ["_edit_last"]=>
    string(1) "1"
    ["expire"]=>
    string(0) ""
    ["featured_expire"]=>
    string(0) ""
    ["views"]=>
    string(2) "11"
    ["phone_reveals"]=>
    string(1) "0"
    ["favorite_count"]=>
    string(1) "0"
    ["myhome_5974_myhome_13"]=>
    string(0) ""
    ["myhome_5973_myhome_13"]=>
    string(0) ""
    ["myhome_130_myhome_13"]=>
    string(6) "444.10"
    ["featured"]=>
    string(1) "0"
    ["myhome_15692"]=>
    string(61) "https://www.m2baza.ru/images/foto/49/foto/6842a885110dde8.jpg"
    ["_links"]=>
    object(stdClass)#11 (9) {
    ["self"]=>
    array(1) {
    [0]=>
    object(stdClass)#9 (2) {
    ["href"]=>
    string(41) "https://wp.q/wp-json/wp/v2/listings/15691"
    ["targetHints"]=>
    object(stdClass)#10 (1) {
    ["allow"]=>
    array(5) {
    [0]=>
    string(3) "GET"
    [1]=>
    string(4) "POST"
    [2]=>
    string(3) "PUT"
    [3]=>
    string(5) "PATCH"
    [4]=>
    string(6) "DELETE"
    }
    }
    }
    }
    ["collection"]=>
    array(1) {
    [0]=>
    object(stdClass)#12 (1) {
    ["href"]=>
    string(35) "https://wp.q/wp-json/wp/v2/listings"
    }
    }
    ["about"]=>
    array(1) {
    [0]=>
    object(stdClass)#13 (1) {
    ["href"]=>
    string(47) "https://wp.q/wp-json/wp/v2/types/myhome_listing"
    }
    }
    ["author"]=>
    array(1) {
    [0]=>
    object(stdClass)#14 (2) {
    ["embeddable"]=>
    bool(true)
    ["href"]=>
    string(34) "https://wp.q/wp-json/wp/v2/users/1"
    }
    }
    ["wp:attachment"]=>
    array(1) {
    [0]=>
    object(stdClass)#15 (1) {
    ["href"]=>
    string(45) "https://wp.q/wp-json/wp/v2/media?parent=15691"
    }
    }
    ["wp:action-publish"]=>
    array(1) {
    [0]=>
    object(stdClass)#16 (1) {
    ["href"]=>
    string(41) "https://wp.q/wp-json/wp/v2/listings/15691"
    }
    }
    ["wp:action-unfiltered-html"]=>
    array(1) {
    [0]=>
    object(stdClass)#17 (1) {
    ["href"]=>
    string(41) "https://wp.q/wp-json/wp/v2/listings/15691"
    }
    }
    ["wp:action-assign-author"]=>
    array(1) {
    [0]=>
    object(stdClass)#18 (1) {
    ["href"]=>
    string(41) "https://wp.q/wp-json/wp/v2/listings/15691"
    }
    }
    ["curies"]=>
    array(1) {
    [0]=>
    object(stdClass)#19 (3) {
    ["name"]=>
    string(2) "wp"
    ["href"]=>
    string(23) "https://api.w.org/{rel}"
    ["templated"]=>
    bool(true)
    }
    }
    }
    }

    А если на роутер пост кидать, то так:

    object(stdClass)#2 (3) {
    [«code»]=>
    string(20) «rest_post_invalid_id»
    [«message»]=>
    string(16) «Invalid post ID.»
    [«data»]=>
    object(stdClass)#3 (1) {
    [«status»]=>
    int(404)
    }
    }

    Автор dvladimirov77

    (@dvladimirov77)

    В поддержку написано, жду ответ.

    Роутеры проще наверное показать в сети — https://m2metr.ru/wp-json/

    Я думал может как нить через инит мета поля поднять, на вроде register_term_meta.

    Но я пока в ВП ничего не понимаю, а доков и примеров очень мало в сети(ну или я не нахожу :)).

    Автор dvladimirov77

    (@dvladimirov77)

    Через /wp-json/wp/v2/posts/20945 не получается отправить — апи ругается: rest_post_invalid_id

    Эта тема/плагин имеют собственный роутер, а у него — нет мета аргумента, попробую скрин закинуть, может получится 🙂

    Скрин никак, текстом:

    /wp/v2/listings/(?P[\d]+)
    namespace "wp/v2"
    methods (5)[ "GET", "POST", "PUT", "PATCH", "DELETE" ]
    endpoints
    0 { methods: (1)[…], allow_batch: {…}, args: {…} }
    1
    methods (3)[ "POST", "PUT", "PATCH" ]
    allow_batch { v1: true }
    args
    id { description: "Unique identifier for the post.", type: "integer", required: false }
    date { description: "The date the post was published, in the site's timezone.", format: "date-time", required: false, … }
    date_gmt { description: "The date the post was published, as GMT.", format: "date-time", required: false, … }
    slug { description: "An alphanumeric identifier for the post unique to its type.", type: "string", required: false }
    status { description: "A named status for the post.", type: "string", required: false, … }
    password { description: "A password to protect access to the content and excerpt.", type: "string", required: false }
    title { description: "The title for the post.", type: "object", required: false, … }
    content { description: "The content for the post.", type: "object", required: false, … }
    author { description: "The ID for the author of the post.", type: "integer", required: false }
    template { description: "The theme file to use to display the post.", type: "string", required: false }
    myhome_5495 { description: "The terms assigned to the post in the myhome_5495 taxonomy.", type: "array", required: false, … }
    myhome_14 { description: "The terms assigned to the post in the myhome_14 taxonomy.", type: "array", required: false, … }
    myhome_9508 { description: "The terms assigned to the post in the myhome_9508 taxonomy.", type: "array", required: false, … }
    myhome_15545 { description: "The terms assigned to the post in the myhome_15545 taxonomy.", type: "array", required: false, … }
    myhome_4661 { description: "The terms assigned to the post in the myhome_4661 taxonomy.", type: "array", required: false, … }
    • Ответ изменён 6 месяцев назад пользователем dvladimirov77.
    Автор dvladimirov77

    (@dvladimirov77)

    Именно так — с другого сайта надо заливать данные в ВП.

    Сами посты через роутер темы/плагина я создаю без проблем. А вот с мета полями засада приключилась. Сама тема MyHome, https://tangiblewp.com/.

    Автор dvladimirov77

    (@dvladimirov77)

    Конечно же не такой урл у апи, это из списка роутеров /wp-json/ скопировал 🙂

    Я хочу через апи изменить/добавить значение поля meta_value в таблице wp_postmeta

    Автор dvladimirov77

    (@dvladimirov77)

    Запутанно как то всё получается. Пост в базе есть, ид — 15691 в таблице wp_posts.

    Но… он создан через плагин MyHome, он не виден в списке постов на /wp-admin/edit.php, у него свой роутер — /wp/v2/listings/(?P<id>[\d]+) и там нет мета поля.

    А если я пытаюсь сохранить через роутер /wp/v2/posts/(?P<id>[\d]+), то получаю ошибку rest_post_invalid_id

    Автор dvladimirov77

    (@dvladimirov77)

    Спасибо, поле в описании роутера нашёл, но вот чего то не хочет меняться.

    Отправляю так:

    $meta = new stdClass();
    $meta->myhome_130_myhome_13 = $row[‘price_obj’];
    $obj = [
    ‘slug’ => $row[‘ssylka’] . ‘_’ . $row[‘kod’],
    ‘title’ => make_object_title($row),
    ‘content’ => string_normalize($row[‘opis’]),
    ‘status’ => ‘publish’,
    ‘myhome_5495’ => $myhome_5495,
    ‘myhome_9508’ => $myhome_9508,
    ‘myhome_14’ => $myhome_14,
    ‘meta’ => $meta,
    ];

    • Ответ изменён 6 месяцев назад пользователем dvladimirov77.
Просмотр 10 ответов — с 1 по 10 (всего 10)