it-swarm.com.de

So fügen Sie einen neuen Embed-Handler hinzu, der von oembed nicht unterstützt wird

Ich möchte Videos von Websites einbetten, die keine Unterstützung bieten, aber die im wp-Codex angebotene Referenz zu wp_embed_register_handler() ist für jemanden wie mich einfach zu weit gefasst.

Ich habe versucht, den Beispielcode in meinen Themes functions.php hochzuladen, von dem ich dachte, dass er jedes Forbes-Video nur von der URL einbettet, wie von oembed unterstützten Websites wie YouTube, aber nur den Link auf den Beitrag ausgibt.

(Hinweis: Alle Links werden aufgrund meiner geringen Wiederholungszahl bearbeitet.)

In meinem Fall versuche ich, Unterstützung für eine Website mit dem Namen myvi.ru hinzuzufügen. Ich möchte nur die URL in einen Beitrag einfügen und automatisch den eingebetteten Iframe-Code ausgeben lassen.

Zum Beispiel setzen

http:/www.myvi.ru/watch/Krishtianu-Ronaldu-na-ploschadi-Madrida_I8fWfbDia0ufHwP7W85ZBg2?ap=1

// an / senden

dies in einen Beitrag, stattdessen muss der eigentliche Einbettungscode abgerufen werden, der dies ist

iframe width="640" height="390" src="/myvi.ru/player/embed/html/o7wvdeXPclZHaazh9Rum_ZuqOtTxR2_ntg5OVhDEhxabugy0qLQDKTbQ0SRijDi8N0" frameborder="0" allowfullscreen></iframe

<> rausgenommen

Ich dachte, das Folgende in die Themes function.php zu integrieren, würde das Problem lösen, aber kein Glück.

wp_embed_register_handler( 'myvi', '#http://(?:www)\.myvi\.ru/(?:video/embed/embed\.html|embedvideo/)\?show=([\d]+)&format=frame&height=([\d]+)&width=([\d]+)&video=(.+?)($|&)#i', 'wp_embed_handler_myvi' );

function wp_embed_handler_myvi( $matches, $attr, $url, $rawattr ) {

    $embed = sprintf(
            '<iframe src="http:/www.myvi.ru/embed/embed.html?show=%1$s&format=frame&height=%2$s&width=%3$s&video=%4$s&mode=render" width="%3$spx" height="%2$spx" frameborder="0" allowfullscreen></iframe>',
            esc_attr($matches[1]),
            esc_attr($matches[2]),
            esc_attr($matches[3]),
            esc_attr($matches[4])
            );

    return apply_filters( 'embed_myvi', $embed, $matches, $attr, $url, $rawattr );
}

Könnte mich bitte jemand in die richtige Richtung weisen? Ich habe versucht, nach anderen Beispielen zu googeln, um daraus zu lernen, kann aber keine finden und stecke fest. Ich würde mich über Ratschläge oder Links zu Informationen, die helfen können, sehr freuen. Vielen Dank!

3
musasi

Registrieren eines benutzerdefinierten Embed-Handlers

Hier ist ein Beispiel, wie wir die Funktion wp_embed_register_handler() in Ihrem Fall verwenden können:

/**
 * Register an embed handler for myvi videos
 */
add_action( 'init', function()
{
    wp_embed_register_handler( 
        'myvi', 
        '#http://www\.myvi\.ru/watch/([a-zA-Z0-9_-]+)$#i',   // <-- Adjust this to your needs!
        'myvi_embed_handler' 
    );
} );

Hier haben wir den regulären Ausdruck so konstruiert, dass er keine GET-Parameter unterstützt. Wenn Sie dies testen, müssen Sie daher den Teil ?api=1 aus der URL entfernen. Ansonsten können Sie den regulären Ausdruck einfach weiter an Ihre Bedürfnisse anpassen.

Der benutzerdefinierte Callback-Handler ist wie folgt definiert:

/**
 * Handler callback for the myvi video provider
 */
function myvi_embed_handler( $matches, $attr, $url, $rawattr )
{
    $embed = sprintf(
        '<iframe src="http://myvi.ru/player/embed/html/%1$s" width="600" height="400" frameborder="0" allowfullscreen></iframe>',
        esc_attr( $matches[1] )
    );
    return apply_filters( 'myvi_embed_handler', $embed, $matches, $attr, $url, $rawattr );
}

Beachten Sie, dass wir hier davon ausgehen, dass alle erforderlichen Einbettungsinformationen im Videolink enthalten sind.

So wird es im Editor funktionieren:

 testing myvi 

Sie sollten dies nur für Sites tun, denen Sie wirklich vertrauen !

3
birgire