Wordpress 站点管理员无法在多站点网络上发布 <iframe>
Wordpress Site Admin can't publish <iframe>s on multsite network
我有一个 Wordpress 多站点网络。我发现如果您不是网络管理员,站点管理员将无法发布 <iframe>s
或 <script>
标签。
我尝试过的:
- 为管理员角色添加了
unfiltered_html
能力
- 已将
iframe
添加到全局 $allowedtags
- 使用
tiny_mce_before_init
过滤器 将 iframe
添加到 extended_valid_elements
我看了很多书,我知道有一个 Iframe 插件,但最好让我的用户从 YouTube 等复制和粘贴 Iframe。
非常感谢任何见解!
编辑:完整代码如下
function add_theme_caps() {
$role = get_role('administrator');
$role->add_cap('unfiltered_html');
}
add_action('admin_init', 'add_theme_caps');
public function add_tags()
{
global $allowedtags;
$allowedtags['iframe'] = [
'src' => [],
'width' => [],
'height' => [],
'frameborder' => [],
'style' => [],
'allowfullscreen' => []
];
}
add_action('init', 'add_tags');
public function add_mce_tags($options) {
// Comma separated string of extended tags
$ext = 'iframe[align|longdesc|name|width|height|frameborder|scrolling|marginheight|marginwidth|src]';
if (isset($options['extended_valid_elements'])) {
$options['extended_valid_elements'] .= ',' . $ext;
} else {
$options['extended_valid_elements'] = $ext;
}
// maybe; set tiny paramter verify_html
// $options['verify_html'] = false;
return $options;
}
add_filter('tiny_mce_before_init', 'add_mce_tags');
您可以使用短代码解决此问题。如果您没有找到需要的解决方案。
类似的东西
add_shortcode('book', array('iframe_shortcode', 'shortcode')); class iframe_shortcode {
function shortcode($atts, $content=null) {
extract(shortcode_atts(array(
'url' => '',
'scrolling' => 'yes',
'width' => '680',
'height' => '850',
'frameborder' => '0',
'marginheight' => '0',
), $atts));
if (empty($url)) return '<!-- Iframe: You did not enter a valid URL -->';
return '<iframe src="'.$url.'" title="" width="'.$width.'" height="'.$height.'" scrolling="'.$scrolling.'" frameborder="'.$frameborder.'" marginheight="'.$marginheight.'"><a href="'.$url.'" target="_blank">'.$url.'</a></iframe>';
} }
admin
不是有效的默认角色,我相信您正在寻找 administrator
。确保你的 $role
对象被实际定义也是一个好习惯(虽然在这种情况下它不应该是一个问题),这应该让你起来并且 运行:
function add_theme_caps() {
if( $role = get_role( 'administrator' ) ){
$role->add_cap('unfiltered_html');
}
}
add_action( 'admin_init', 'add_theme_caps' );
我有一个 Wordpress 多站点网络。我发现如果您不是网络管理员,站点管理员将无法发布 <iframe>s
或 <script>
标签。
我尝试过的:
- 为管理员角色添加了
unfiltered_html
能力 - 已将
iframe
添加到全局$allowedtags
- 使用
tiny_mce_before_init
过滤器 将
iframe
添加到 extended_valid_elements
我看了很多书,我知道有一个 Iframe 插件,但最好让我的用户从 YouTube 等复制和粘贴 Iframe。
非常感谢任何见解!
编辑:完整代码如下
function add_theme_caps() {
$role = get_role('administrator');
$role->add_cap('unfiltered_html');
}
add_action('admin_init', 'add_theme_caps');
public function add_tags()
{
global $allowedtags;
$allowedtags['iframe'] = [
'src' => [],
'width' => [],
'height' => [],
'frameborder' => [],
'style' => [],
'allowfullscreen' => []
];
}
add_action('init', 'add_tags');
public function add_mce_tags($options) {
// Comma separated string of extended tags
$ext = 'iframe[align|longdesc|name|width|height|frameborder|scrolling|marginheight|marginwidth|src]';
if (isset($options['extended_valid_elements'])) {
$options['extended_valid_elements'] .= ',' . $ext;
} else {
$options['extended_valid_elements'] = $ext;
}
// maybe; set tiny paramter verify_html
// $options['verify_html'] = false;
return $options;
}
add_filter('tiny_mce_before_init', 'add_mce_tags');
您可以使用短代码解决此问题。如果您没有找到需要的解决方案。
类似的东西
add_shortcode('book', array('iframe_shortcode', 'shortcode')); class iframe_shortcode {
function shortcode($atts, $content=null) {
extract(shortcode_atts(array(
'url' => '',
'scrolling' => 'yes',
'width' => '680',
'height' => '850',
'frameborder' => '0',
'marginheight' => '0',
), $atts));
if (empty($url)) return '<!-- Iframe: You did not enter a valid URL -->';
return '<iframe src="'.$url.'" title="" width="'.$width.'" height="'.$height.'" scrolling="'.$scrolling.'" frameborder="'.$frameborder.'" marginheight="'.$marginheight.'"><a href="'.$url.'" target="_blank">'.$url.'</a></iframe>';
} }
admin
不是有效的默认角色,我相信您正在寻找 administrator
。确保你的 $role
对象被实际定义也是一个好习惯(虽然在这种情况下它不应该是一个问题),这应该让你起来并且 运行:
function add_theme_caps() {
if( $role = get_role( 'administrator' ) ){
$role->add_cap('unfiltered_html');
}
}
add_action( 'admin_init', 'add_theme_caps' );