Je veux utiliser un shortcode qui génère une URL courte à partir de l'API du script Premium URL Shortener.
J'ai ajouté le code de l'API à mes fonctions de modèle:
// 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");
Ensuite, je voulais vérifier si cela fonctionnait, alors j’ai ajouté dans le code unique du modèle:
<?php echo do_shortcode('[shorten]http://mylink.com[/shorten]'); ?>
Cela fonctionne, je vois un lien court.
Comment puis-je utiliser ce lien court dans d'autres endroits où j'ai des liens externes, générés par un modèle (functions.php
), comme ci-dessous?
<?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; } ?>
Vous n’avez jamais besoin de do_shortcode()
, mieux dire, presque jamais, il y a quelques cas où do_shortcode()
pourrait convenir.
Notez comment vous pourriez faire juste:
echo shorten_url( 'http://mylink.com ' );
au lieu de:
echo do_shortcode('[shorten]http://mylink.com[/shorten]');
Pensez aux shortcodes comme étant des espaces réservés pour les fonctions PHP; ils sont destinés à être utilisés là où vous ne pouvez pas exécuter PHP directement, comme le contenu de post. Mais si vous pouvez exécuter PHP directement, comme dans un script PHP, il n'y a aucune raison d'utiliser des codes abrégés, qui constituent l'espace réservé, vous pouvez utiliser le PHP fonctionner directement. Il y a beaucoup d'avantages, en moyenne une meilleure performance, car do_shortcode()
exécute des regex dont vous n'avez pas besoin.
Vous pouvez donc utiliser le raccourci partout où vous en avez besoin. Par exemple:
<?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; } ?>