未国际化的OEmbedded中的JSON(使用QTranslateX)

时间:2017-01-16 作者:Iván Pérez

我正在使用QTranslateX plugin 最新版本3.4.6.8,全新安装WordPress 4.7.1。目前一切正常。

但我已经看到,在JSON oembed页面中,有些内容没有国际化。看看这个example on my site. 这个title 返回的JSON对象上的属性,该属性显示[:es]Noticias[:en]News[:] (即QTransletex之前的标题适用于i18n),而不是Noticias.

我在LinkedIn上发布消息时发现了这个问题。当他们试图获取标题以显示更好的链接以及一些介绍和图像时,他们会在内部获取此页面以确定链接的标题。

是否有人知道这是否可以轻松修复,或者我是否需要另一个插件来获得对它的支持?提前感谢!

1 个回复
SO网友:Fabio

我也有同样的问题。我变了一点,我不再是一个编码员了。函数get\\u oembed\\u response\\u data中的php文件如下:

/**
 * Retrieves the oEmbed response data for a given post.
 *
 * @since 4.4.0
 *
 * @param WP_Post|int $post  Post object or ID.
 * @param int         $width The requested width.
 * @return array|false Response data on success, false if post doesn\'t exist.
 */
function get_oembed_response_data( $post, $width ) {
    $post  = get_post( $post );
    $width = absint( $width );


    $title = $post->post_title;
    $title = str_replace("[:it]","",$title);
    $title = str_replace("[:en]","",$title);
    $title = str_replace("[:]","",$title);


    if ( ! $post ) {
        return false;
    }

    if ( \'publish\' !== get_post_status( $post ) ) {
        return false;
    }

    /**
     * Filters the allowed minimum and maximum widths for the oEmbed response.
     *
     * @since 4.4.0
     *
     * @param array $min_max_width {
     *     Minimum and maximum widths for the oEmbed response.
     *
     *     @type int $min Minimum width. Default 200.
     *     @type int $max Maximum width. Default 600.
     * }
     */
    $min_max_width = apply_filters( \'oembed_min_max_width\', array(
        \'min\' => 200,
        \'max\' => 600
    ) );

    $width  = min( max( $min_max_width[\'min\'], $width ), $min_max_width[\'max\'] );
    $height = max( ceil( $width / 16 * 9 ), 200 );

    $data = array(
        \'version\'       => \'1.0\',
        \'provider_name\' => get_bloginfo( \'name\' ),
        \'provider_url\'  => get_home_url(),
        \'author_name\'   => get_bloginfo( \'name\' ),
        \'author_url\'    => get_home_url(),
        \'title\'         => $title,
        \'type\'          => \'link\',
    );

    $author = get_userdata( $post->post_author );

    if ( $author ) {
        $data[\'author_name\'] = $author->display_name;
        $data[\'author_url\']  = get_author_posts_url( $author->ID );
    }

    /**
     * Filters the oEmbed response data.
     *
     * @since 4.4.0
     *
     * @param array   $data   The response data.
     * @param WP_Post $post   The post object.
     * @param int     $width  The requested width.
     * @param int     $height The calculated height.
     */
    return apply_filters( \'oembed_response_data\', $data, $post, $width, $height );
}
不是解决方案,但只是一种变通方法Fabio

相关推荐

WordPress oEmbedded W3C验证

我最近建立了一个主题,利用oEmbed WordPress中的功能。如果可能,我喜欢通过W3C验证我的主题。该网站的内容是由Vimeo视频驱动的,因此我发现了30多个验证错误。验证工具标记以下属性:frameborder webkitallowfullscreen mozallowfullscreen 我知道allowfullscreen 属性对于HTML5播放器是必需的,但想知道是否有一个解决方案可以通过验证?我看得出来webkitallowfullscreen 和mozall