Afisarea unei pagini construite cu Elementor folosind REST API

1 feb. 2018, 16:25:50
Vizualizări: 17.4K
Voturi: 9

Sunt nou in lucrul cu REST API si nu reusesc sa inteleg aceasta problema.

Am mai multe pagini statice create cu constructorul de pagini Elementor. Incerc sa integrez un player de muzica continuu pe site, asa ca vreau sa inlocuiesc continutul unei pagini cu continutul altei pagini cand dau click pe un link din meniu. Toate paginile au acelasi header si footer care sunt deja randate la incarcarea initiala a paginii, asa ca am crezut ca e suficient sa inlocuiesc doar zona de continut.

Presupun ca la click pe un link ar trebui sa se apeleze o functie JavaScript care face un apel GET la my-site.domain/wp-json/wp/v2/pages/pageid. Cand incerc asta in browser, continutul randat in obiectul json este corect dar incomplet. Afiseaza tot continutul si tagurile html, dar fara clasele Elementor. Cand incarc pagina normal, prima parte a continutului incepe cu o multime de randuri, containere si widget-uri Elementor care pozitioneaza si stilizeaza continutul. Primul continut real arata asa:

<h1 class="elementor-heading-title elementor-size-default"> TITLU </h1>

Totusi, cand fac un apel API, continutul randat nu are div-urile, clasele sau stilurile Elementor si arata astfel:

<h1> TITLU </h1>

Intrebarea mea este: cum pot obtine tot acest continut suplimentar in obiectul json? Banuiesc ca are legatura cu modul in care Elementor stocheaza datele? Se pare ca sunt stocate in tabelul _postmeta intr-un format json, asa ca presupun ca continutul real este randat in mod normal de un fisier php din pluginul Elementor. Pot sa randez eu acest continut folosind un endpoint personalizat, inainte sa il injectez intr-o pagina deja randata folosind JavaScript? Sau folosesc REST API complet gresit?

1
Comentarii

Încearcă această https://elementor.com/help/getresponse-elementor-integration/

zac zac
6 mar. 2023 02:03:14
Toate răspunsurile la întrebare 1
2

poți crea un nou endpoint cu următorul cod și poți prelua conținutul Elementor pe URL-ul wp-json/MyPlugin/v1/pages/PAGE_ID/contentElementor

add_action("rest_api_init", function () {

    register_rest_route(
          "MyPlugin/v1"
        , "/pages/(?P<id>\d+)/contentElementor"
        , [
            "methods" => "GET",
            "callback" => function (\WP_REST_Request $req) {

                $contentElementor = "";

                if (class_exists("\\Elementor\\Plugin")) {
                    $post_ID = $req->get_param("id");

                    $pluginElementor = \Elementor\Plugin::instance();
                    $contentElementor = $pluginElementor->frontend->get_builder_content($post_ID);
                }


                return $contentElementor;

            },
        ]
    );


});
1 feb. 2018 22:49:50
Comentarii

Salut. Am folosit modificarea ta pentru endpoint-ul functions.php, dar returnează și elementul sau datele... Cum pot folosi doar o pagină goală cu output-ul meu JSON pentru anumite lucruri? De exemplu...

        if(!empty($_REQUEST['usejson']))
        {
            $data = array("video" => $video_url);
            $json = json_encode($data);
            echo $json;
            return;
        }
David Kachlon David Kachlon
22 dec. 2019 23:16:53

Aceasta returnează același output ca și API-ul REST standard al WP la /wp-json/wp/v2/pages/<page_id> pentru paginile Elementor.

rebroken rebroken
16 aug. 2021 13:28:23