我正在尝试做一个短代码,创建我的多站点wordpress网络中所有站点的列表。我的想法是在页面正文中使用list_sites,并得到我所有站点的列表。
我使用get_sites是因为我使用的是4.8.3版本。
当我将这个函数添加到我的父主题的functions.php文件中时,我会得到500个内部错误。
我尝试使用一个名为“代码段”的插件来添加这段代码,但是我得到了这个错误,它提供了一个线索:
由于第11行的错误:语法错误,意外的'[‘’,这个片段已被停用。
我在网上看到的每个示例代码似乎都使用相同的语法,所以我不知道自己做错了什么。
这是我的密码:
function make_list_shortcode() {
$subsites = get_sites();
if ( ! empty ( $subsites ) ) {
echo '<ul class="subsites">';
foreach( $subsites as $subsite ) {
$subsite_id = get_object_vars( $subsite )["blog_id"];
$subsite_name = get_blog_details( $subsite_id )->blogname;
$subsite_link = get_blog_details( $subsite_id )->siteurl;
echo '<li class="site-' . $subsite_id . '"><a href="' . $subsite_link . '">' . $subsite_name . '</a></li>';
}
echo '</ul>';
}
}
add_shortcode('list_sites', 'make_list_shortcode');发布于 2017-10-31 17:08:43
你做错了几件事。您不应该回显短代码输出,应该返回它。而且,您没有以正确的方式访问对象属性。试试下面的代码:
function make_list_shortcode() {
$subsites = get_sites();
if ( ! empty ( $subsites ) ) {
$html = '<ul class="subsites">';
foreach( $subsites as $subsite ) {
$subsite_id = $subsite->blog_id;
$subsite_name = get_blog_details( $subsite_id )->blogname;
$subsite_link = get_blog_details( $subsite_id )->siteurl;
$html .= '<li class="site-' . $subsite_id . '"><a href="' . $subsite_link . '">' . $subsite_name . '</a></li>';
}
$html .= '</ul>';
return $html;
}
}
add_shortcode('list_sites', 'make_list_shortcode');https://stackoverflow.com/questions/47040109
复制相似问题