日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

wordpress functions.php 在哪,在functions.php中定义变量并在WordPress中的函数钩子中访问它们...

發布時間:2023/12/10 php 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 wordpress functions.php 在哪,在functions.php中定义变量并在WordPress中的函数钩子中访问它们... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我想更詳細地了解Wordpress結構.正如我所知,使用全局關鍵字并不是一個好主意.

這是我想要完成的:

Inside functions.php

$affID = '12334'; //defining a variable

add_shortcode('affiliate_link', function() {

$newLink = 'https://example.com?id=' . $affID;

return $newLink;

}

當我運行短代碼時,我只獲得https://example.com?id=部分內容.

當然,我可以傳遞$affID作為參數,但我想設置一個很大的變量列表,我將在不同的函數中使用,我認為通過這么大的列表并不是一個好主意.參數.

解決方法:

這里只是一些想法.真的,這是一個“范圍”問題比什么都重要.

使用

只需使用封閉的使用部分:

$affID = '12334'; //defining a variable

add_shortcode('affiliate_link', function() use ($affID){

$newLink = 'https://example.com?id=' . $affID;

return $newLink;

});

當我看到關閉時,我感到非常高興,這可能是最簡單的方法.

另一種方法是使用類實例維護它的狀態(如果你真的想要,你可以做靜態).如果您需要以任何方式使用此功能的類或一般聯盟系統,這是有道理的.然后你就可以解決這個問題了,沒什么大不了的:

class foo{

protected $affID = '12334';

public function affiliate_link_callback(){

$newLink = 'https://example.com?id=' . $this->affID;

return $newLink;

}

}

//to use a class as a call back it works like call_user_func, [obj, method]

add_shortcode('affiliate_link', [new foo, 'affiliate_link_callback']);

全球

最不可取的是使用全局,我個人厭惡并且從不使用它們(但我認為這是一個選項). Globals很糟糕,因為找出(或跟蹤)它們被設置(或修改)的位置可能是一個真正的挑戰,這使得調試它成為一項真正的苦差事.

global $affID;

$affID = '12334'; //defining a variable

add_shortcode('affiliate_link', function(){

global $affID;

$newLink = 'https://example.com?id=' . $affID;

return $newLink;

});

不變

您可以將其定義為常量,只有在代碼的其他部分中使用它時才真正有意義,因為它使維護更容易.在幾個地方你需要這個ID并不是不可能的,并且常量為你提供了一種處理它的全局方式.也可以想象你不會在運行時修改它.它比“全局”更好,因為它不能在運行時更改,因此可以消除跟蹤代碼中的更改位置的問題(因為它不可能).當然,由于這個原因,它有自己的一套局限性.無論如何,它很簡單:

define('AFF_ID','12334'); //defining a variable

add_shortcode('affiliate_link', function(){

global $affID;

$newLink = 'https://example.com?id=' . AFF_ID;

return $newLink;

});

數據庫

最后取決于$affID你可以將它存儲在wordpress DB中.我可能會去用戶meta,因此它鏈接到用戶帳戶.但是,如果它是網站的全球價值,你可以使用選項設置的東西(我不得不看一下,example).不要引用我的代碼,因為我忘記了get_user_meta返回的確切內容,但我知道你應該幾乎總是返回一個值(第三個arg應該是true)

add_shortcode('affiliate_link', function(){

$meta = get_user_meta(get_current_user_id(), 'affiliate_id', true);

$newLink = 'https://example.com?id=' . $meta['affiliate_id'];

return $newLink;

});

當然在最后一個示例中,您必須在某個時刻保存數據,但我相信您可以解決這個問題.

SHORTCODE ATTR

我想您在問題中提到了這一點,但您也可以將其作為短代碼的一部分發送:

add_shortcode('affiliate_link', function($attr){

extract(shortcode_atts( array(

'id' => false,

), $atts, 'affiliate_link' ));

if(!$affiliate_id) return '';

$newLink = 'https://example.com?id='.$id;

return $newLink;

});

我使用了上面的提取,這是一個有趣的PHP函數.我不會推薦它,因為它可以污染你的變量,并且存在一些安全問題.

Import variables from an array into the current symbol table.

Checks each key to see whether it has a valid variable name. It also checks for collisions with existing variables in the symbol table.

Warning

Do not use extract() on untrusted data, like user input (e.g. $_GET, $_FILES).

基本上它需要[‘id’=>’12345’]并創建一個名為$id的變量,其值為12345(在此示例中).你不必使用它,我通常會避免使用它.但我認為在這個例子中使用它會很有趣.

其他想法

另外一個想法是,我將返回整個鏈接而不僅僅是href.所以不要這樣做

Link

你會這樣做:

[affiliate_link]Link[/affiliate_link]

// [affiliate_link id="12345" ]Link[/affiliate_link]

主要原因是在第一種情況下,如果您的短代碼失敗,它將在頁面上留下無用的鏈接.除非他們密切關注實際的鏈接目的地,否則用戶將無法告知此情況.但是,如果您生成整個鏈接并且它失敗,則不會在頁面上放置任何內容.這對于沒有聯盟會員ID的用戶也很有用(如果您使用用戶元示例,并且它與之鏈接).在這種情況下,如果鏈接沒有聯盟ID,則沒有任何內容可以顯示,但如果他們這樣做,鏈接就會顯示.正如我所提到的,如果你把鏈接放在帖子中然后他們沒有它,你仍然會得到一個鏈接,但是有一個空目的地(希望這是有意義的).

如果你這樣做,那么我也會為鏈接文本添加內容.使用上一個例子(上面):

add_shortcode('affiliate_link', function($attr, $content=''){

extract(shortcode_atts( array(

'id' => false,

), $atts, 'affiliate_link' ));

if(!$affiliate_id) return '';

$newLink = ''.$content.'';

return $newLink;

});

//this shortcode

//[affiliate_link id="12345" ]Link[/affiliate_link]

//generates this link

//Link

也就是說,我不知道這是否只能用于鏈接,圖像等等.所以我只是想為了完整性而添加它.

真的,這取決于你如何使用它,ID是如何“靜態”的.它是特定于站點,特定于用戶,是否可以動態更改……?

對不起,這太久了,我剛剛寫了4個wordpress插件,添加了簡單的短代碼…大聲笑.所以我最近才考慮他們.我真的很喜歡短代碼.

希望有所幫助.

標簽:wordpress,php

來源: https://codeday.me/bug/20190622/1261788.html

總結

以上是生活随笔為你收集整理的wordpress functions.php 在哪,在functions.php中定义变量并在WordPress中的函数钩子中访问它们...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。