Support » Allgemeine Fragen » Sedo Codes einbetten

  • Gelöst pezi

    (@pezi)


    Hallo!

    Weiß jemand, wie man diese Codes des Domainmarktplatzes Sedo in WP unterbringt?
    Konkret geht es um ein JS Script (die „Domain-Suche mit Cobranding„) und um ein PHP Script („Rotierende Liste von Top Domains„).

    Habe auch Code Snippets installiert, doch egal was und wie, es tut sich nichts.
    Es gibt bei keinem der Scripte auch nur irgendeine Reaktion, Anzeige oder Fehlermeldung.

    Mein weiterer Ansatz wäre, pro Sedo-Code eine [Shortcode erzeugende ?] Funktion in die functions.php des Child-Themes zu notieren.
    Doch aufgrund der gemischten Struktur der zvg. Codes (JS, bzw. PHP und HTML) ist mein brain.exe abgestürzt …

    Evtl. weiß wer Rat?
    Danke!

Ansicht von 10 Antworten - 1 bis 10 (von insgesamt 10)
  • Du kannst mit Code Snippets JavaScript über einen Hook einbinden, also sowas wie:

    add_action( 'wp_head', 'mein_sedo_code' );
    function mein_sedo_code() { ?>
    
    <script type="text/javascript">
        var _sedoq = _sedoq || {};
        _sedoq.campaignId = '00000000'; // enter your campaign id
        _sedoq.locale = 'de-de'; // language locale (en-us, en-gb, de-de, es-es, fr-fr, pt-br, zh-cn)
    
        (function () {
            var s = document.createElement('script');
            s.type = 'text/javascript';
            s.async = true;
            s.src = '/c7r/assets/static/libs/sedo/widget.search.get.js';
            var f = document.getElementsByTagName('script')[0];
            f.parentNode.insertBefore(s, f);
        })();
    </script>
    <div id="sedo-widget-search"></div>
    
    <?php }
    
    Thread-Starter pezi

    (@pezi)

    Aha, danke so sollte das oben aussehen

    Doch wie weiter? Wo rufe ich wie die Funktion auf, wie kriege ich das, bzw. das Ausgabe Div dorthin, wo ich will?

    Wald und Bäume …

    add_action( 'wp_head', 'mein_sedo_script' );
    function mein_sedo_script() { 
    ?>
    
    <script type="text/javascript">
        var _sedoq = _sedoq || {};
        _sedoq.campaignId = '00000000'; // enter your campaign id
        _sedoq.locale = 'de-de'; // language locale (en-us, en-gb, de-de, es-es, fr-fr, pt-br, zh-cn)
    
        (function () {
            var s = document.createElement('script');
            s.type = 'text/javascript';
            s.async = true;
            s.src = '/c7r/assets/static/libs/sedo/widget.search.get.js';
            var f = document.getElementsByTagName('script')[0];
            f.parentNode.insertBefore(s, f);
        })();
    </script>
    <div id="sedo-widget-search"></div>
    
    <?php
    function getTopDomains() {
        $lines = file('https://sedo.com/txt/topdomains_d.txt');
        $topDomains = array();
        foreach($lines as $line) {
            array_push($topDomains, str_getcsv($line, '~'));
        }
    
        shuffle($topDomains);
        return array_slice($topDomains, 0, 5);
    }
    
    $topDomains = getTopDomains();
    }
    
    add_shortcode( 'sedo', 'mein_sedo_shortcode' );
    function mein_sedo_shortcode() {
    	global $topDomains;
    	$out = '
    	<table style="border: 0 none; background-color: #e0e8ef; border-collapse: separate; border-spacing: 1px">
        <tr>
            <th colspan="2" style="background-color: #e0e8ef; font-size:16px; font-weight:600; padding: 5px 10px;">
                TOP Domains
            </th>
        </tr>';
    
        foreach($topDomains as $domain) { 
        $out .= '<tr>
            <td style="background-color: #fafafa; padding: 5px 10px;">
                <a href="https://sedo.com/search/details/?campaignId=00000000&language=d&domain='. $domain[0] . ' target="_blank" style="font-size:14px;">';
        $out .= $domain[0]; 
        $out .= '</a>
            </td>
            <td style="background-color: #fff; font-size:14px; padding: 5px 10px;">' . $domain[1] . '</td>
        </tr>';
    	}
        $out .= '</table>';
    
        return $out;
    }

    Also einmal JavaScript mit wp_head() hinzugefügt, die Funktion getTopDomains() ohne Hook und das HTML/PHP mit einem Shortcode. OB’s klappt, kann ich nicht sagen – mir fehlt eine gültige campaignId.

    Thread-Starter pezi

    (@pezi)

    Danke, aber das klappt auch nicht so ganz.

    Seite bleibt weiß und in der Konsole:
    Failed to load resource: the server responded with a status of 404 ()
    Gemeint ist: '/c7r/assets/static/libs/sedo/widget.search.get.js'
    Diese komische, relative URL fiel mir ja schon vorher auf, wo soll denn die herkommen?

    Also habe ich „https://sedo.com“ vorangestellt und siehe da: Die Suchmaske erscheint.
    Fehler werden aber weiterhin ausgeworfen:

    jquery-migrate.min.js?ver=3.3.2:2 JQMIGRATE: Migrate is installed, version 3.3.2
    (index):170 GET https://baustelle.zib.info/c7r/assets/static/libs/sedo/widget.search.get.js net::ERR_ABORTED 404
    (anonymous) @ (index):170
    (anonymous) @ (index):171
    DevTools failed to load source map: Could not load content for https://cdn.sedo.com/c7r/assets/static/libs/external/jquery.min.map: HTTP error: status code 403, net::ERR_HTTP_RESPONSE_CODE_FAILURE

    Also ich habe keinen Schimmer wie dieses Script warum so angepasst ist, das würde ich gerne verstehen.
    Und dann noch kapieren, wie ich die Suchmaske auch dorthin kriege, wo sie hin soll (vmtl. per Shortcode [mein_sedo_shortcode] ?) Weil dzt. erscheint nur die Suchmaske, statt der ganzen Site …

    So muss weg … Vielen 1000 Dank bisher!

    Thread-Starter pezi

    (@pezi)

    Update:
    Die Domainsuche funzt mal!
    Dazu hat eh das erste Script gereicht, hier war eben nur der (von Sedo selbst vergessene) erste Teil der URL („https://sedo.com“) schuld.

    Also:

    <?php
    add_action( 'wp_head', 'mein_sedo_code' );
    
    function mein_sedo_code() { ?>
    <script type="text/javascript">
        var _sedoq = _sedoq || {};
        _sedoq.campaignId = '1234567'; // enter your campaign id
        _sedoq.locale = 'de-de'; // language locale (en-us, en-gb, de-de, es-es, fr-fr, pt-br, zh-cn)
    
        (function () {
            var s = document.createElement('script');
            s.type = 'text/javascript';
            s.async = true;
            s.src = 'https://sedo.com/c7r/assets/static/libs/sedo/widget.search.get.js';
            var f = document.getElementsByTagName('script')[0];
            f.parentNode.insertBefore(s, f);
        })();
    </script>
    <?php }

    lädt das Schript im Head und
    den <div id="sedo-widget-search"></div> musste man natürlich aus dem Script nehmen und an die gewünschte Stelle in einem Widget, Beitrag oder so verpflanzen

    Teil 2, die Domainliste beginne ich auch schon zu verstehen, wie und warum was davon in $out kommt um als Shortcode zvg. zu stehen.
    Testen tu ichs später … Evtl. bring ich das auch noch zum laufen …

    Danke, Bego!

    Thread-Starter pezi

    (@pezi)

    Die Domainliste lässt sich leider nicht blicken.

    Zuerst habe ich öfters Fehler produziert, da ich die beiden Sachen getrennt in Code Snippets unterbringen wollte.
    Also die Domainsuche und die Domainliste als eigenes Snippet.
    Warum?
    Dachte, so lerne ich wie das mit dem
    add_action( 'wp_head', 'name' ); function name() { ...
    und dem
    add_shortcode ...
    so geht.
    Dabei ging halt einiges schief, Try & Error halt. Denke aber, es nun ein wenig begriffen zu haben.

    So schaut die Domainliste als alleiniges Snippet nun aus:

    <?php
    // Funktion getTopDomains in den Head
    add_action( 'wp_head', 'getTopDomains' );
    // Topdomains abholen
    function getTopDomains() {
        $lines = file('https://sedo.com/txt/topdomains_d.txt');
        $topDomains = array();
        foreach($lines as $line) {
            array_push($topDomains, str_getcsv($line, '~'));
        }
    
        shuffle($topDomains);
        return array_slice($topDomains, 0, 5);
    }
    
    // Var $topDomains mit dem Array aus Fkt. getTopDomains füttern
    $topDomains = getTopDomains();
    
    // Shortcode hinzufügen
    add_shortcode( 'sedo', 'mein_sedo_shortcode' );
    function mein_sedo_shortcode() {
    	global $topDomains;
    	$out = '
    	<table style="border: 0 none; background-color: #e0e8ef; border-collapse: separate; border-spacing: 1px">
        <tr>
            <th colspan="2" style="background-color: #e0e8ef; font-size:16px; font-weight:600; padding: 5px 10px;">
                TOP Domains
            </th>
    	</tr>';
    // Array $topDomains ausgeben:
        foreach($topDomains as $domain) { 
        $out .= '
    	<tr>
        	<td style="background-color: #fafafa; padding: 5px 10px;">
           		<a href="https://sedo.com/search/details/?campaignId=1234567&language=d&domain='. $domain[0] . ' target="_blank" style="font-size:14px;">'.$domain[0].'</a>
    		</td>
            <td style="background-color: #fff; font-size:14px; padding: 5px 10px;">' 
    		. $domain[1] . 
    		'</td>
        </tr>';
    	}
        $out .= '</table>';
    
        return $out;
    }

    Dazu eben der Shortcode [sedo]

    Aber:
    Alles was auftaucht ist die Überschrift „TOP Domains„, eine Liste erscheint nicht.

    Wer weiß, ob es nicht wieder ein Fehler von Sedo selbst ist? So wie bei der Suche, wo die URL nicht komplett angegeben wurde? Klar, das muss ich mit denen klären.

    Wüsste nur gerne, ob ich das Snippet nun richtig habe.
    Zum testen braucht man dann halt meine echte campaignId. Wird ja nix machen, wenn ich die nenne, oder?

    add_action( 'wp_head', 'getTopDomains' );
    function getTopDomains() { … }

    Wieso willst du diese PHP-Funktion in den Header integrieren?
    Wo ist das JavaScript abgeblieben?

    den <div id=“sedo-widget-search“></div> musste man natürlich aus dem Script nehmen und an die gewünschte Stelle in einem Widget, Beitrag oder so verpflanzen

    Das war mir durchgegangen, das sollte Bestandteil des Shortcodes sein, mit dem du den HTML-Code in einer Seite platzierst.

    Probier’s mal so:

    add_action( 'wp_head', 'mein_sedo_code' );
    function mein_sedo_code() { ?>
    
    <script type="text/javascript">
        var _sedoq = _sedoq || {};
        _sedoq.campaignId = '00000000'; // enter your campaign id
        _sedoq.locale = 'de-de'; // language locale (en-us, en-gb, de-de, es-es, fr-fr, pt-br, zh-cn)
    
        (function () {
            var s = document.createElement('script');
            s.type = 'text/javascript';
            s.async = true;
            s.src = '/c7r/assets/static/libs/sedo/widget.search.get.js';
            var f = document.getElementsByTagName('script')[0];
            f.parentNode.insertBefore(s, f);
        })();
    </script>
    
    <?php }
    
    function getTopDomains() {
        $lines = file('https://sedo.com/txt/topdomains_d.txt');
        $topDomains = array();
        foreach($lines as $line) {
            array_push($topDomains, str_getcsv($line, '~'));
        }
    
        shuffle($topDomains);
        return array_slice($topDomains, 0, 5);
    }
    
    add_shortcode( 'sedo', 'mein_sedo_shortcode' );
    function mein_sedo_shortcode() {
    	
    	$topDomains = getTopDomains();
    	
    	$out = '
    	<div id="sedo-widget-search"></div>
    	<table style="border: 0 none; background-color: #e0e8ef; border-collapse: separate; border-spacing: 1px">
        <tr>
            <th colspan="2" style="background-color: #e0e8ef; font-size:16px; font-weight:600; padding: 5px 10px;">
                TOP Domains
            </th>
        </tr>';
    
        foreach($topDomains as $domain) { 
        $out .= '<tr>
            <td style="background-color: #fafafa; padding: 5px 10px;">
                <a href="https://sedo.com/search/details/?campaignId=00000000&language=d&domain='. $domain[0] . ' target="_blank" style="font-size:14px;">';
        $out .= $domain[0]; 
        $out .= '</a>
            </td>
            <td style="background-color: #fff; font-size:14px; padding: 5px 10px;">' . $domain[1] . '</td>
        </tr>';
    	}
        $out .= '</table>';
    
        return $out;
    }

    wie und warum was davon in $out kommt um als Shortcode zvg. zu stehen.

    Shortcode: Ein in eckige Klammern gesetzter Begriff, der beim Rendern eines Beitrags oder einer Seite um die Ausgabe einer Funktion ersetzt wird. Dabei gibt die Funktion eine Ausgabe zurück (return), damit die Ausgabe an der richtigen Stelle im Text platziert werden kann. Ein echo-Statement würde den Inhalt hingegen bei Aufruf der Funktion an damit an der falschen Stelle platzieren.

    
    //Shortcode [name_des_shortcode] soll 'Hello Dolly!' zurückgeben
    
    add_shortcode( 'name_des_shortcode', 'funktion_des_shortcode' );
    function funktion_des_shortcode() {
    
    // Inhalt, der ausgegeben werden soll, wird in eine Variable gesetzt
    $out = 'Hello ';
    
    // … und kann durch Konkatenation erweitert werden
    $out =. 'Dolly!';
    
    // Am Ende gibt die Funktion des Inhalt der Variablen zurück
    return $out;
    }
    
    Thread-Starter pezi

    (@pezi)

    Wieso willst du diese PHP-Funktion in den Header integrieren?

    Weil anfangs überhaupt gar nichts erschien, wollte man nur die Domainliste haben. Danach schon (aber ohne Liste).

    Wo ist das JavaScript abgeblieben?

    Wie gesagt, ich wollte die beiden Services trennen: Domainsuche und Domainliste.
    Das aus mehreren Gründen:
    1. Beide sollten auch getrennt platzierbar sein (was eigentlich eh geht, wenn man DIV und [Shortcode] woanders platziert – was ich erst später verstand)
    2. Beide stehen auch in der Sedo Site getrennt, so als ob man eins der Services auch alleine verwenden könnte. (Scheint nicht so zu sein? Die Domainliste funzt nicht ohne das JS von der Suchmaske …)
    3. Wollte auch je einen Codeschnippsel für jedes Service im Plugin „Code Snippet“ (übersichtlicher?)
    4. Und eben wegen dem lernen, wie man diese Scripts und deren Ausgaben handelt. (was ich alleine so nicht schaffte, weil man die beiden scheinbar nicht trennen darf?)

    So, dank dir, Bego, funzt es genauso wie in der letzten Version beschrieben!
    (bloß die Scripturl ist von Sedo tatsächlich falsch angegeben, diese muss eben https://sedo.com/c7r/assets/static/libs/sedo/widget.search.get.js sein)

    Nochmals 1000 THX!

    Bez. Shortcode:
    Dessen (oben beschriebenen) Basics hatte ich schon ein bissl, ich war nur (in dem Fall) unsicher, was wie wo in die Var $out gepackt werden muss, usw.
    Auch da vielen Dank!

    Werde mir beides noch oft ansehen, versuchen es zu verstehen, warum die beiden Services nur gemeinsam laufen. Warum Sedo beides extra zvg. stellt, frage ich die noch.

    Nachtrag zu Pkt. 1:
    Das trennen beider Ausgaben funktioniert in Beiträgen/Seiten eben mittels getrennter Platzierung von DIV und [Shortcode]
    Doch in den Widgets (egal ob HTML oder Textwidget) kommt allein mittels Shortcode beides.
    Stört ja nicht, gehört eh zusammen, doch warum der DIV nur innerhalb von Beiträgen befüllt wird … ? Hm. Aber wurst, Hauptsache es kommt irgendwas.

    • Diese Antwort wurde geändert vor 2 Jahren, 7 Monaten von pezi. Grund: Nachtrag zu Pkt. 1
    Thread-Starter pezi

    (@pezi)

    Leider noch ein Nachtrag: Es scheint noch mehr Fehler in den Sedo Scripts zu geben – denn jede in der anklickbaren Liste erscheinende Domainname erzeugt einen 404 …

Ansicht von 10 Antworten - 1 bis 10 (von insgesamt 10)
  • Das Thema „Sedo Codes einbetten“ ist für neue Antworten geschlossen.