web-dev-qa-db-ja.com

ショートリンクを生成するためのAPIの使用

Premium URL ShortenerスクリプトのAPIから短いURLを生成するショートコードを使いたい。

私はテンプレート関数にAPIからコードを追加しました:

// Main Function
function shorten_url($url){

    $siteurl="http://go.mysite.com"; // FOR Example http://gempixel.com/short
    $apikey="8jkyA3e7xs1J"; // You can get it from the user account

    if($apikey && $siteurl){
        $short=@file_get_contents("$siteurl/api?api=$apikey&url=".strip_tags(trim($url)));
        $short=json_decode($short,TRUE);
        if(!$short["error"]){
            return $short["short"];
        }
    }
}
// Shortcode function
function shortcode_shorten_url($atts,$content){
   return shorten_url($content);
}

// Register Shortcode
add_shortcode("shorten", "shortcode_shorten_url");

次に、それが機能するかどうかをチェックしたいので、私はテンプレートシングルコードを追加しました:

<?php echo do_shortcode('[shorten]http://mylink.com[/shorten]'); ?>

それはうまくいきます、私は短いリンクを見ます。

以下のように、テンプレート(functions.php)によって生成された外部リンクがある他の場所でその短いリンクをどのように使用できますか?

<?php  $numerado = 1; { while( have_rows('voo') ): the_row(); ?>
    <li class="elemento">
    <a href="**I WANT TO PUT SHORT LINK HERE INSTEAD NORMAL LINK FROM op1**<?php echo get_sub_field('op1'); ?>" rel='nofollow' target="_blank" class="prawyklik">
    <span class="a"><b class="icon-controller-play play"></b> <?php _e('Option','mundothemes'); ?> <?php echo $numerado; ?></span>
    <span class="b">
    <img src="http://www.google.com/s2/favicons?domain=<?php echo get_sub_field('op2'); ?>" alt="<?php echo get_sub_field('op2'); ?>"> 
    <?php echo get_sub_field('op2'); ?>
    </span>
    <span class="c"><?php echo get_sub_field('op3'); ?></span>
    <span class="d"><?php echo get_sub_field('op4'); ?></span>
    </a>
    </li>
    <?php $numerado++; ?>
<?php endwhile; } ?>
1
Mateo

あなたはdo_shortcode()を必要としません、do_shortcode()が適切である可能性があるいくつかのケースがありますが、ほとんど絶対にありません。

どうすればよいのかに注意してください。

echo shorten_url( 'http://mylink.com ' );

の代わりに:

echo do_shortcode('[shorten]http://mylink.com[/shorten]');

ショートコードはPHP関数のプレースホルダーとして考えてください。 postの内容のように、PHPを直接実行できない場合に使用することを目的としています。しかし、PHPスクリプトのようにPHPを直接実行できるのであれば、プレースホルダーであるショートコードを使用する理由はありません。その場合は、PHPを使用できます。直接機能します。 do_shortcode()はあなたが全くよくないいくつかのpreg regexを実行するので、たくさんの利点があります。つまり、より良いパフォーマンスです。

だから、あなたはあなたが必要とするあらゆる場所にショートリンクを使うことができます。例えば:

<?php  $numerado = 1; { while( have_rows('voo') ): the_row(); ?>
    <li class="elemento">
    <a href="<?php echo shorten_url( get_sub_field('op1') ); ?>" rel='nofollow' target="_blank" class="prawyklik">
    <span class="a"><b class="icon-controller-play play"></b> <?php _e('Option','mundothemes'); ?> <?php echo $numerado; ?></span>
    <span class="b">
    <img src="http://www.google.com/s2/favicons?domain=<?php echo get_sub_field('op2'); ?>" alt="<?php echo get_sub_field('op2'); ?>"> 
    <?php echo get_sub_field('op2'); ?>
    </span>
    <span class="c"><?php echo get_sub_field('op3'); ?></span>
    <span class="d"><?php echo get_sub_field('op4'); ?></span>
    </a>
    </li>
    <?php $numerado++; ?>
<?php endwhile; } ?>
0
cybmeta