Edit: 好吧,我明白你想做得更好一点。这应该有助于你达到目标。
缓存您想要的数据。如果你在每次页面加载时都查询Yelp,你会很快超过API限制,更不用说让你的网站速度大大降低了。
function yelplist() {
$pizza_joints = wp_cache_get( \'pizza-joints\' );
if ( !$pizza_joints ) {
require_once (\'/lib/OAuth.php\');
require_once (\'yelp.php\');
require_once(ABSPATH.\'/wp-admin/includes/taxonomy.php\');
$yelpstring = file_get_contents(\'http://api.yelp.com/business_review_search?term=pizza&location=Los%20Angeles&ywsid=xxxxxxxxxxxxxxxxxxx\');
$obj = json_decode($yelpstring);
$pizza_joints = array();
foreach( $obj->businesses as $business ) {
$path = trim( \'\' . parse_url($business->url, PHP_URL_PATH) . \'\', \'/biz\' );
$pizza_joints[ $path ] = $business;
}
wp_cache_set( \'pizza-joints\', $pizza_joints );
}
return $pizza_joints;
}
创建一个单独的比萨饼联合评论页面,并为其设置自定义页面模板。跟踪该页面的页面ID。在我剩下的示例中,我会说这个页面的ID为
50 其使用的页面模板是
single-pizza.php.
在首页上:当您想链接到各个比萨饼店页面时,请链接到该页面,并传递一个额外的变量来反映您想显示的各个比萨饼店。使用该功能add_query_arg 要生成传递该变量的url,请执行以下操作:
$pizza_joints = yelplist();
foreach ( $pizza_joints as $path => $pizza_joint ) {
echo \'<p><a href="\'
. add_query_arg( \'pizza\', $path, get_permalink( 50 ) )
. \'">\' . $pizza_joint->name . \'</a></p>\';
}
现在单击该链接时,查看器将转到模板定义的页面
single-pizza.php. 在该模板中,您可以通过检查$\\u GET[\'pizza]的内容来访问传递的变量。
/*
Template Name: Single Pizza Joint Data
*/
$pizza_joints = yelplist();
if ( isset( $_GET[\'pizza\'] ) && array_key_exists( $_GET[\'pizza\'], $pizza_joints ) ) {
$this_business = $pizza_joints[ $_GET[\'pizza\'] ];
echo \'<img src="\' . $this_business->photo_url .\'">\';
echo \'<h2>\' . $this_business->name .\'</h2>\';
echo \'<h4>\' . $this_business->phone .\'</h2>\';
} else {
// either no variable was passed, or it doesn\'t match a business in the list
wp_redirect( home_url() );
}