我正在尝试创建一个基于 Wordpress 简码的简单函数,该函数将采用定义的数字并将其转换为最终用户的本地货币。我卡住的地方是如何在帖子中搜索短代码,因为定义的数字可能会发生变化。如果有人可以请让我知道如何最好地将数字提取为变量,然后我可以通过汇率函数运行它(效果很好,我已经使用自定义字段存储数据对其进行了测试)。
{customShortcode - priceAdditions [400]}
我已经尝试过explode()
它[]
,这似乎显示出希望,但我无法弄清楚如何提取它,而且有可能不止一个实例与不同的数字一起使用。我认为regex
或者preg_match
可能是要走的路,但我还不太明白。
如果您需要更多信息,请告诉我。提前致谢。
担
编辑-有效的短代码功能-
$thePostContent = get_the_content($post->ID);
$thePostContent = str_replace('{customShortcode - price}',thePrice(),$thePostContent);
功能 -
function thePrice(){
$pageURL = 'http';
if ($_SERVER["HTTPS"] == "on") {$pageURL .= "s";}
$pageURL .= "://";
if ($_SERVER["SERVER_PORT"] != "80") {
$pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
} else {
$pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
}
$Exploded_URL = explode("/",$pageURL);
if ($Exploded_URL[4] == ''){$thePostIsIn = 217;}
elseif ($Exploded_URL[4] == 'productA'){$thePostIsIn = 347;}
elseif ($Exploded_URL[4] == 'productB'){$thePostIsIn = 345;}
else {$thePostIsIn = 217;}
if (empty($_COOKIE['userLocate']) || $_COOKIE['userLocate'] == 'US' || ($_COOKIE['userLocate'] != 'EU' && $_COOKIE['userLocate'] != 'AU' && $_COOKIE['userLocate'] != 'GB')){
$currencyCode = 'USD';
$currencyPrefix = '$';
}
elseif ($_COOKIE['userLocate'] == 'EU'){
$currencyCode = 'EUR';
$currencyPrefix = '€';
}
elseif ($_COOKIE['userLocate'] == 'AU'){
$currencyCode = 'AUD';
$currencyPrefix = 'A$';
}
elseif ($_COOKIE['userLocate'] == 'GB'){
$currencyCode = 'GBP';
$currencyPrefix = '£';
}
else {
$currencyCode = 'USD';
$currencyPrefix = '$';
}
$args=array(
'post_type' =>'page',
'post__in' => array($thePostIsIn)
);
$recent_posts = get_posts($args);
foreach( $recent_posts as $recent ){
$mypages = get_post( $recent->ID );
$theBaseRate = get_post_meta($recent->ID, "Payment Cost",1);
if(get_post_meta($recent->ID, "Payment Period",1)){
$payPeriod = get_post_meta($recent->ID, "Payment Period",1);
}
else{
$payPeriod = "per month";
}
$rssFeedUrl = "http://themoneyconverter.com/rss-feed/GBP/rss.xml";
$rss = simplexml_load_file($rssFeedUrl);
foreach($rss->channel->item as $feedItem){
$currency = explode('/',$feedItem->title);
if(strpos($currency[0], $currencyCode )!== false){
$content = $feedItem->description;
$content = explode('= ',$content);
$content = substr($content[1],0,7);
$theCost = $theBaseRate * $content;
$theCost = number_format($theCost, 2, '.', '');
}
}
}
echo '<p class="rentCost"><span class="rentalCost">'.$currencyPrefix.$theCost.' '.$payPeriod.'</span></p><div class="clear"></div>';
}