是否将SoundCloud中的信息嵌入到自定义字段中?

时间:2015-09-29 作者:pixelgirrrl

我正在写一个有4000多篇帖子的博客。他们中的大多数人都在帖子中嵌入了soundcloud iframe。

我正在创建一个新的自定义字段(使用高级自定义字段),该字段使用soundclouds API自定义播放器。。。我只需要自定义字段中soundcloud曲目的URL。。不是嵌入信息。

是否可以扫描博客并从soundcloud嵌入中检索信息并将其放入自定义字段?

我用过Display Embedded Videos by D.Biot, 一个插件,基本上对youtube做了同样的事情。

任何帮助都将不胜感激!如果你需要我发布任何代码,请告诉我,但我认为这与。。。

-----SOUNDCLOUD通用嵌入------这里是SOUNDCLOUD的随机嵌入。

<iframe width="100%" height="450" scrolling="no" frameborder="no" src="https://w.soundcloud.com/player/?url=https%3A//api.soundcloud.com/tracks/212039125&amp;auto_play=false&amp;hide_related=false&amp;show_comments=true&amp;show_user=true&amp;show_reposts=false&amp;visual=true"></iframe>

1 个回复
最合适的回答,由SO网友:Mayeenul Islam 整理而成

这是一个初级插件,未经测试。当插件被激活时,它将运行一次。

复制代码,使其成为名为__once.phpwp-content\\plugins\\__once\\wp-admin/plugins.php, 并激活名为__once.WARNING: 它没有经过测试。建议您先进行测试,修复bug,以适合您的方式进行修复,然后使用它或构建您的程序。

<?php
/**
 * Plugin name: __once
 * Plugin URI: http://wordpress.stackexchange.com/a/204002/22728
 * Description: A onetime minimal plugin to update all the postmeta from the content iframes.
 */


/**
 * Grabbing all the posts and populating postmeta.
 * Once, only on this plugin\'s activation.
 */
function wpse_do_once() {
    $all_posts = new WP_Query(
        array(
            \'post_type\'         => \'any\',
            \'post_status\'       => array( \'publish, pending, draft\' ),
            \'posts_per_page\'    => -1
        )
    );
    while ( $all_posts->have_posts() ) : $all_posts->the_post();
        $post_content = get_the_content();

        //the src information from iframe
        $src = wpse_get_iframe_src( $post_content );

        foreach( $src as $link ) {
            //Populating the custom field
            //Assumed: Your custom field id is \'_my_embed_link\'
            //this will override the values if there\'s two or more iframes
            if( !empty() ) {
                update_post_meta( get_the_ID(), \'_my_embed_link\', esc_url( $link ) );
            }
        }


    endwhile;
    wp_reset_postdata();
}
register_activation_hook( __FILE__, \'wpse_do_once\' );

/** HELPER FUNCTION */

/**
 * Grab all iframe src from a string.
 * @author Dbranes
 * @link   http://wpquestions.com/question/showChrono/id/10006
 * @param  string $input The content.
 * @return string        The src attribute value.
 */
function wpse_get_iframe_src( $input ) {
    preg_match_all("/<iframe[^>]*src=[\\"|\']([^\'\\"]+)[\\"|\'][^>]*>/i", $input, $output );

    $return = array();

    if( isset( $output[1][0] ) )
        $return = $output[1];

    return $return;
}
它的工作原理:它从站点获取所有状态的帖子,然后获取所有内容,并使用自定义功能(由RegEx提供支持)(source) 已从iframes获取src。然后将src值放入posmeta(也称为自定义字段)。

请注意,如果帖子内容中有多个src值,则helper函数将返回一个src值数组。所以一个人update_post_meta() 将用另一个覆盖其中一个。在这种情况下,可以选择避免foreach循环,并以序列化形式保存数组。然后,在显示字段数据时,使用get_post_meta() 您需要从那里显示单个URL。

相关推荐

使用帖子标题搜索WP API

我正在使用WP REST API v2尝试搜索具有相同标题的所有帖子,我尝试的是为两个团队创建一种“面对面/以前的会议”页面。目前我可以用一个弹头收回一个帖子,没问题.../wp-json/sportspress/v2/events?slug=team1-vs-team2 当我使用搜索时,它会检索team1和team2的所有事件,以及对team1的所有引用;2来自帖子内容,这不是我想要的。。。.../wp-json/sportspress/v2/events?search=team1+team2