简体   繁体   English

编码base64自定义字段链接wordpress

[英]Encode base64 custom field link wordpress

I want to encode my custom field links in Wordpress. 我想在Wordpress中对自定义字段链接进行编码。 I use a plugin to generate my custom field : Advanced Custom Fields. 我使用一个插件来生成我的自定义字段:高级自定义字段。

I found a code with Php and JS 我用Php和JS找到了一个代码

In single.php 在single.php中

function cl($url) {
    $taille = strlen($url);
    $urlcode = "";

    for ($i = 0; $i < $taille; $i++) {
        if ($i % 2) {
            $urlcode.= "ajoutdunechainedecaractere" . $url{$i};
        }
        else {
            $urlcode.= $url{$i};
        }
    }
    return base64_encode($urlcode);
}

I have a JS file 我有一个JS文件

 function btob(text) {
   text = text.replace(/\s/g,""); if (!(/^[a-z0-9\+\/\s]+\={0,2}$/i.test(text)) || text.length % 4 > 0) { return text; }
   var digits = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/', cur, prev, digitNum, i=0, result = [], text = text.replace(/=/g, "");
   while (i < text.length){
       cur = digits.indexOf(text.charAt(i)); digitNum = i++ % 4;
       switch (digitNum) {
           case 1: result.push(String.fromCharCode(prev << 2 | cur >> 4)); break;
           case 2: result.push(String.fromCharCode((prev & 0x0f) << 4 | cur >> 2)); break;
           case 3: result.push(String.fromCharCode((prev & 3) << 6 | cur)); break;
       }
       prev = cur;
   }
   return result.join('');
}

function transformText() {
       var s = document.getElementsByTagName('span');
       for (i = 0; i < s.length; i++)
               if ((s[i].className.indexOf('lc') != -1)){

                       var lien = btob(s[i].getAttribute('data')).replace(/ajoutdunechainedecaractere/g,"");

           var lnk = document.createElement('a'); 
           lnk.href = lien; 
           lnk.innerHTML = s[i].innerHTML; 
           s[i].innerHTML = ''; 
           s[i].appendChild(lnk);

           if( s[i].hasAttribute("onclick") )
           //on récupère l'attribut onclick pour l'ajouter dans le lien
           {
               lnk.setAttribute('onclick', s[i].getAttribute('onclick'));
           }
        }
}
window.onload=transformText;

To display my link without encoding it I need to put that in my single.php 要显示链接而不进行编码,我需要将其放在single.php中

<?php the_field(lien); ?>

For encoding link I need replace this by that code, encoded is OK: 对于编码链接,我需要用该代码替换它,编码没问题:

<span class="lc" data="<?php echo cl("http://www.exemple.com"); ?>" onclick="test()"> MY ANCHOR </span>

But if I replace " http://www.exemple.com " with my customfield 但是如果我用customfield替换“ http://www.exemple.com

 <span class="lc" data="<?php echo cl(the_field(lien)); ?>" onclick="test()"> MY ANCHOR </span>

I don't have an encoded url, only a normal url. 我没有编码的网址,只有普通的网址。

So please what am I doing wrong ? 所以,请问我做错了什么?

Thanks for your help. 谢谢你的帮助。

You need get_field : http://www.advancedcustomfields.com/resources/functions/get_field/ 您需要get_fieldhttp : //www.advancedcustomfields.com/resources/functions/get_field/

<span class="lc" data="<?php echo cl(get_field(lien)); ?>" onclick="test()"> MY ANCHOR </span>

the_field actually echos the value, get_field returns it. the_field实际上回显该值, get_field返回它。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM