在标题中插入带有定制字段和CPT的js脚本的最佳方式

时间:2015-11-10 作者:Eduardo Sánchez Hidalgo Urías

我正在处理一个自定义的帖子类型,它可以作为登录页。登录页有几个带有元信息的自定义字段,这没有问题,它工作得很好。但我的客户希望在他将创建的每个LP的标题中插入一个facebook跟踪代码,该脚本如下所示:

<script>(function() { var _fbq = window._fbq || (window._fbq = []); if (!_fbq.loaded) { var fbds = document.createElement(\'script\'); fbds.async = true; fbds.src = \'//connect.facebook.net/en_US/fbds.js\'; var s = document.getElementsByTagName(\'script\')[0];s.parentNode.insertBefore(fbds, s); _fbq.loaded = true; } _fbq.push([\'addPixelId\', \'1570176543221608\']); })(); window._fbq = window._fbq || []; window._fbq.push([\'track\', \'PixelInitialized\', {}]); </script> <noscript><img height="1" width="1" alt="" style="display:none" src="https://www.facebook.com/tr?id=15701765432&amp;ev=PixelInitialized" /></noscript>   
我创建了一个<textarea> 自定义字段。文本区域显示在post editor中landing_page_posts CPT,如果我用文本填充它,它会正常工作(当帖子保存时,它会将内容保存在文本区域内,如果我调用get_post_meta($post->ID, "the_textarea_content", true); 但如果我将facebook跟踪代码脚本粘贴到文本区域内,则保存帖子后文本区域将变为空白,并且脚本不会出现在帖子的标题中。

下面是我用来回应文章标题中脚本的其余代码,这些代码放在函数中。子主题的php:

function facebook_tracking_code() {    
    if(get_post_type() === "landing_page_posts") {
        global $post;
        echo get_post_meta($post->ID, "facebook-tracking-code", true);
    }
}
add_action( \'wp_head\', \'facebook_tracking_code\');
有没有其他方法可以使这项工作正常进行。我在其他线程中读到有一个插件、高级自定义字段或类似的内容,但我希望没有这个插件。最好是学习如何正确地完成它,然后,在其他项目中,如果必要的话,使用插件。提前谢谢。

1 个回复
SO网友:Eduardo Sánchez Hidalgo Urías

我的代码有两个问题。第一个是我没有使用esc_textarea(), 但当我使用它时,问题并没有消失,所以我检查了存储在数据库中文本区域中给出的文本的函数,我发现;因为我的CPT中的所有其他字段都是文本字段,所以我正在用sanitize_text_field() 函数,这就是删除HTML标记。我删除sanitize_text_field() 在中使用文本区域变量之前update_post_meta(), 现在一切都好了。

相关推荐

如何让`wp-list-table`显示我在Custom-Post中的`Custom-Fields`

一切都好吗<我需要wp-list-table 也要显示custom-fields 在每个custom-post 我有,但我不知道如何做到这一点,在这幅图中,它显示了带有字段的表格:Title, Author and Publication Date: 我想要的是能够选择custom-fields 将出现,例如以下示例Title, Carta, Naipe, Author, and Date of Publication: