您好,我正在使用wordpress中的smarty模板引擎生成HTML,如下所示:
<li>
<div class="checkbox_container" data-asin="B0009Y7APU"><input type="checkbox" class="ecom_compare_products" data-asin="B0009Y7APU" value="B0009Y7APU"/>
</div>
<div class="small_img_container"><img class="related_product_image" src="img.jpg" alt="Case Logic JDS-2 USB Drive Shuttle 2-Capacity (Black/Blue)">
</div>
<div class="title_container"><a href="">Case Logic JDS-2 USB Drive Shuttle 2-Capacity (Black/Blue)</a>
</div>
</li>
问题是,当发布文章时,Wordpress似乎正在从该标记中删除数据属性。上面的标记是我在给自己发送电子邮件时实际得到的。
$post_content = $smarty->fetch( \'product_detail.tpl\' );
wp_mail(\'[email protected]\', \'debug posting of products\', \'content: \' . $post_content);
$post = array(
\'post_title\' => $item_name,
\'post_content\' => $post_content,
\'post_type\' => \'post\',
\'tags_input\' => $amazon_keywords,
\'comment_status\' => $allow_comments,
\'ping_status\' => $allow_pingbacks,
\'post_status\' => \'publish\'
);
wp_insert_post($post);
但当我编辑发表的帖子时,我得到的是:
<li>
<div class="checkbox_container"></div><div class="small_img_container">
<img class="related_product_image" src="img.jpg" alt="Case Logic JDS-2 USB Drive Shuttle 2-Capacity (Black/Blue)">
</div>
<div class="title_container">
<a href="">Case Logic JDS-2 USB Drive Shuttle 2-Capacity (Black/Blue)</a>
</div>
</li>
真的很奇怪。我不知道结果是怎样的。但更奇怪的是,只有在使用预定事件发布帖子时才会发生这种情况,我通过从AJAX调用该事件来触发该事件。mons\\u post\\u产品的代码是文章的实际发布。
add_action(\'ecom_scheduler\', \'mons_post_product\');
function ecom_schedule_event(){
wp_schedule_single_event(time(), \'mons_scheduler\');
}
add_action(\'wp_ajax_schedule\', \'mons_schedule_event\');
add_action(\'wp_ajax_nopriv_schedule\', \'mons_schedule_event\');
在admin\\u菜单中连接方法时,没有问题:
add_action(\'admin_menu\', function(){
mons_post_product();
});
有什么想法吗?
SO网友:honk31
我也有同样的问题,Wern Ancheta的解决方案对我有效,但kses除外。
KSES是一个递归的首字母缩略词,代表“KSES剥离邪恶脚本”。你不想禁用它,对吧?!尤其是在自动处理外部内容时。
我的问题是,我通过cron更新了一篇帖子,还插入了一些数据属性,当cron运行时,它们被剥离了。顺便说一句,在更新自定义字段(update\\u post\\u meta)时,仅在post\\u内容(wp\\u update\\u post)上出现此问题。
因此,任务是让KSE接受我的自定义属性,而不是禁用它。
因此,在以下解决方案中,KSES不会剥夺我的自定义data-start
也没有data-end
当在<tr>
标签
function jnz_add_kses_attributes($allowed, $context){
if (is_array($context)) {
return $allowed;
}
if ($context === \'post\' || $context === \'page\') {
$allowed[\'tr\'][\'data-start\'] = true;
$allowed[\'tr\'][\'data-end\'] = true;
}
return $allowed;
}
add_filter(\'wp_kses_allowed_html\', \'jnz_add_kses_attributes\', 10, 2);