我正在开发一个自定义快捷码:
[abuzz-store slug="woolworths" fields="description,level,phone" more="true"]
短代码在网站前端正常工作。但是,我无法再在wp admin中保存对页面的编辑。尝试在适当的模板之外执行短代码时会引发各种PHP错误。
以下是短代码功能:
/**
* [indo_store_details_shortcode description]
*
* @param [type] $atts [description]
* @return [type] [description]
*/
function indo_store_details_shortcode($atts)
{
$options = shortcode_atts(array(
// Abuzz Store slug
\'slug\' => \'\',
// Abuzz Store fields to display (title, description, level, phone)
\'fields\' => \'\',
// Display a link to further store details (store page)
\'more\' => false,
), $atts);
// sanity checks
if (!$options[\'slug\']) return \'\';
// if (is_admin()) return \'\';
$output = \'\';
// retrieve store information
$store = get_posts(array(
\'name\' => $options[\'slug\'],
\'post_type\' => \'store\',
))[0];
// determine fields to display
$fields = explode(\',\', $options[\'fields\']);
$output .= \'<article class="abuzz-store">\';
// title field
if (in_array(\'title\', $fields)) {
$output .= sprintf(\'<h2>%s</h2>\', $post->post_title);
}
// "metadata" .options-list
if (in_array(\'level\', $fields) ||
in_array(\'phone\', $fields)) {
$output .= \'<ul class="nav options-list">\';
// level field
if (in_array(\'level\', $fields)) {
$levels = get_group(\'Level\', $store->ID);
$output .= sprintf(\'<li class="icon-text"><i class="icon-text__icon icon icon-level-black"></i> %s</li>\', indo_combine_levels($levels));
}
// phone field
if (in_array(\'phone\', $fields)) {
$output .= sprintf(\'<li class="icon-text"><i class="icon-text__icon icon icon-phone-black"></i> %s</li>\', get(\'phone_number\', 1, 1, $store->ID));
}
$output .= \'</ul>\';
}
// description field
if (in_array(\'description\', $fields)) {
$output .= get(\'information_text\', 1, 1, $store->ID);
}
// "More details" link
if ($options[\'more\']) {
$output .= sprintf(\'<p><a href="%s" title="More details" class="btn btn--black-arrow icon-text--rev">More details <i class="icon-text__icon icon icon-arrow-white"></i></a></p>\', get_permalink($store->ID));
}
$output .= "</article>\\n";
return $output;
}
add_shortcode(\'abuzz-store\', \'indo_store_details_shortcode\');
错误:
Fatal error: Call to undefined function get_group() in D:\\xampp\\htdocs\\126-indooroopilly-shopping-centre\\www\\public_html\\wp-content\\themes\\indooroopilly\\include\\shortcodes.php on line 90get_group
是由第三方插件(Magic Fields)添加的函数,该插件未加载到wp admin中。这正是我所期望的。
为什么在保存页面时执行此操作?