每页自定义脚本或自定义帖子类型

时间:2012-07-18 作者:JCHASE11

一个客户端请求了一些有趣的功能。他们有大约20种不同的脚本,其中大多数只需要一个页面。他们希望Wordpress的页面和自定义帖子类型中有一个区域,只为该页面添加脚本。因此,当页面加载时,脚本加载到页眉或页脚中,而不是与正文内容内联。我正在寻找一个想法或插件,使这个功能发生。有什么想法吗?

3 个回复
最合适的回答,由SO网友:amit 整理而成

我假设您想在标题中加载一些特定于post的脚本(JavaScript)。

1。使用Wordpress自定义字段可以通过使用Wordpress自定义字段来实现这一点,而在发布新帖子时,只需添加一个带有名称的自定义字段(即-header_script) 并在下一个文本字段中输入脚本源。

这将在wordpress数据库中以名称-header_script

要在头文件中加载位于该源的脚本,请输入以下代码header.php 或加入footer.php 以防您希望在页脚中加载该脚本。

下面的代码将加载存储在自定义字段中的src信息-header_script

Update - 代码已经更新,可以在Wordpress循环之外工作。

<?php global $wp_query; 
  $postid = $wp_query->post->ID;
  $key="header_script";?><script type="text/javascript" src="<?php echo get_post_meta($postid, $key, true); ?>"></script>
使用此代码显示多个脚本。注意-我将第三个值更改为false,这允许我们在同一自定义字段名下存储和检索多个值。

<?php global $wp_query;
$postid = $wp_query->post->ID;
$key="header_script";
$h_scripts=get_post_meta($postid, $key, false);
foreach($h_scripts as $h_scripts) { ?><script type="text/javascript" src="<?php echo $h_scripts ?>"></script><?php }?>

2。在wordpress中使用条件语句,如果脚本是特定于每个帖子类型或类别的,则意味着例如-图像帖子需要jQuery厚框,视频帖子需要一些脚本来在页面上显示视频。。。只是一个例子

您可以使用条件语句仅加载post类型所需的脚本。

<?php if ( \'image\' == get_post_type() ) { ?>
<script type="text/javascript" src="scrip-1"></script>
<?php } elseif ( \'video\' == get_post_type() ) { ?>
<script type="text/javascript" src="scrip-2"></script>
<?php } else {} ?>
上述代码将仅在上加载脚本1image 职位类型等。但我认为最好的方法是将脚本源保存为自定义字段。

SO网友:Duane

我会使用自定义元数据库来完成此操作。我使用WPAlchemy MetaBox class, 但如果您只是创建一个元数据库,那么最好只使用Wordpress metabox API.

一个标准的文本字段就足够了,但一个上传的metabox会更加用户友好。

然后在该元框的页眉或页脚中检索输入的URL。

如果您需要更专业的答案,请告诉我,我会用更多信息编辑此答案。

SO网友:Kayahan Kahrıman

如果要加载特定帖子类型的js文件,可以使用get_post_type()

if (get_post_type() === \'products\') {
    wp_enqueue_script(\'pd\', JS_DIR . \'/product-gallery.js\', array(), \'1.0\', true);
}

结束

相关推荐

WP_enQueue脚本页脚中的my_javascript_file

我正试着my_javascript_file 在页脚中。根据文件$in_footer 是第五个值,它是布尔值,所以我将它设置为true.目前,从检查代码可以看出,它在任何地方都没有出现。让它工作起来,它被藏在一个div里,我忘了关(哎呀)更新将第四个参数添加为空字符串\' \'功能。PHP文件<?php function load_scripts() { wp_enqueue_script(\'jquery\'); wp_enqueue_script(\'my_j