我使用textarea
字段和函数保存每个wordpress tag
的一些额外信息
这是textarea
字段(使用stripslashes
(:
<textarea name="Tag_meta[related_links]" id="Tag_meta[related_links]" size="25" placeholder="enter here the links html"><?php echo stripslashes($tag_meta['related_links'] ? $tag_meta['related_links'] : ''); ?></textarea>
这是保存功能:
add_action ( 'edit_term', 'save_termmeta_tag');
// save extra category extra fields callback function
function save_termmeta_tag( $term_id ) {
if ( isset( $_POST['Tag_meta'] ) ) {
$t_id = $term_id;
$tag_meta = get_option( "tag_$t_id");
$tag_keys = array_keys($_POST['Tag_meta']);
foreach ($tag_keys as $key){
if (isset($_POST['Tag_meta'][$key])){
$tag_meta[$key] = $_POST['Tag_meta'][$key];
}
}
//save the option array
update_option( "tag_$t_id", $tag_meta );
}
}
问题是在这些保存的字段中的一个中(在wp_options
表中(,我有一点HTML
,而问题存在于该HTML
内部的link
上。
正如您在下面的示例中看到的,这是在textarea
字段中输入的HTML
(在保存表单之前(:
<li><a rel="nofollow" target="_blank" href="https://www.blablabla.com/the-rest-of-the-link">link</a></li>
这是它在wp_options
表中的保存方式:
<li><a rel="nofollow" target="_blank" href="https://www.blablabla.com/the-rest-of-the-link">link</a></li>
请注意:每次保存选项时,保存过程还会广告extra的。例如:
保存一个:
<li><a rel="nofollow" target="_blank" href="https://www.blablabla.com/the-rest-of-the-link">link</a></li>
保存两个:
<li><a rel=\"nofollow\" target=\"_blank\" href=\"https://www.blablabla.com/the-rest-of-the-link\">link</a></li>
等等。。
这就是它的输出方式(由echo
(:
http://www.mydomainname.com/https://www.blablabla.com/the-rest-of-the-link"
这里可能出了什么问题?
工作解决方案:
在文本区域替换此:
<?php echo stripslashes($tag_meta['related_links'] ? $tag_meta['related_links'] : ''); ?>
通过此:
<?php echo stripslashes($tag_meta['related_links'] ? $tag_meta['related_links']) : ''; ?>
在echo
上执行以下操作:
echo stripslashes($tag_meta['related_links']);
编辑:
答案得到更正,@bossman 做出了巨大贡献