在自定义 post 类型存档页面中执行脚本时出现问题
Troubles with executing script in custom post type archive page
我有一个自定义 post 类型的存档页面,我想在其中为该页面执行特定的脚本。使用此函数(在 function.php 中)将脚本加载到页面中:
function cpt_archive_enqueue_script() {
if (is_post_type_archive('cpt-slug')) {
wp_enqueue_script( 'cpt-archive-script', get_stylesheet_directory_uri() . '/js/cpt-archive-script.js', array( 'jquery' ), '1.0.0', true );
};
}
add_action ('wp_enqueue_scripts', 'cpt_archive_enqueue_script');
正如我在页面检查器中看到的那样,页面加载了脚本但未执行加载的脚本(相同的脚本工作 f.e。如果在类别页面中加载)。
有人建议解决这个问题吗?谢谢!
如果这里可以提供帮助,请参阅加载的脚本(这是一个非常简单的脚本,如果单击标题,它会打开文章内容)。
jQuery(document).ready(function($) {
$('article.post').each(function() {
var $dropdown = $(this);
$("div.entry-title", $dropdown).click(function(e) {
e.preventDefault();
$div = $("div.entry-content", $dropdown);
$div.toggle();
$("div.entry-content").not($div).hide();
return false;
});
});
$('html').click(function(){
$("div.entry-content").hide();
});
});
尝试使用以下代码,它必须在每个页面上都有效。
add_action('wp_head','callfunctioneverywhere');
function callfunctioneverywhere()
{
echo '<script defer src="'.get_stylesheet_directory_uri() .'/js/cpt-archive-script.js" ></script>';
}
完整代码如下:
jQuery(document).ready(function($) {
$('article.post').each(function() {
var $dropdown = $(this);
$("div.entry-title", $dropdown).click(function(e) {
e.preventDefault();
$div = $("div.entry-content", $dropdown);
$div.toggle("blind", 300);
$("div.entry-content").not($div).hide("blind", { direction: "up" }, "300");
return false;
});
});
$('html').click(function(){
$("div.entry-content").hide("blind", { direction: "up" }, "300");
});
});
.hide {display: none;}
<?php
//* add custom classes
add_filter( 'body_class', 'journal' );
function journal ( $classes ) {
$classes[] = 'journal';
return $classes;
}
//* Remove the link from each post title
add_filter( 'genesis_post_title_output', 'elimina_link_titolo', 15 );
function elimina_link_titolo( $title ) {
$title = sprintf( '<div class="entry-title five-sixth mostra">%s</div> ', apply_filters( 'genesis_post_title_text', get_the_title() ) );
return $title;
}
//* Add the 'hide' class ( .hide {display: none;} )to not show the content that will appear by clicking on title
add_filter ('genesis_attr_entry-content', '\margine_sx_un_terzo');
function margine_sx_un_terzo ( array $attributes ) {
$attributes['class'] .= ' hide';
return $attributes;
}
genesis();
我有一个自定义 post 类型的存档页面,我想在其中为该页面执行特定的脚本。使用此函数(在 function.php 中)将脚本加载到页面中:
function cpt_archive_enqueue_script() {
if (is_post_type_archive('cpt-slug')) {
wp_enqueue_script( 'cpt-archive-script', get_stylesheet_directory_uri() . '/js/cpt-archive-script.js', array( 'jquery' ), '1.0.0', true );
};
}
add_action ('wp_enqueue_scripts', 'cpt_archive_enqueue_script');
正如我在页面检查器中看到的那样,页面加载了脚本但未执行加载的脚本(相同的脚本工作 f.e。如果在类别页面中加载)。
有人建议解决这个问题吗?谢谢!
如果这里可以提供帮助,请参阅加载的脚本(这是一个非常简单的脚本,如果单击标题,它会打开文章内容)。
jQuery(document).ready(function($) {
$('article.post').each(function() {
var $dropdown = $(this);
$("div.entry-title", $dropdown).click(function(e) {
e.preventDefault();
$div = $("div.entry-content", $dropdown);
$div.toggle();
$("div.entry-content").not($div).hide();
return false;
});
});
$('html').click(function(){
$("div.entry-content").hide();
});
});
尝试使用以下代码,它必须在每个页面上都有效。
add_action('wp_head','callfunctioneverywhere');
function callfunctioneverywhere()
{
echo '<script defer src="'.get_stylesheet_directory_uri() .'/js/cpt-archive-script.js" ></script>';
}
完整代码如下:
jQuery(document).ready(function($) {
$('article.post').each(function() {
var $dropdown = $(this);
$("div.entry-title", $dropdown).click(function(e) {
e.preventDefault();
$div = $("div.entry-content", $dropdown);
$div.toggle("blind", 300);
$("div.entry-content").not($div).hide("blind", { direction: "up" }, "300");
return false;
});
});
$('html').click(function(){
$("div.entry-content").hide("blind", { direction: "up" }, "300");
});
});
.hide {display: none;}
<?php
//* add custom classes
add_filter( 'body_class', 'journal' );
function journal ( $classes ) {
$classes[] = 'journal';
return $classes;
}
//* Remove the link from each post title
add_filter( 'genesis_post_title_output', 'elimina_link_titolo', 15 );
function elimina_link_titolo( $title ) {
$title = sprintf( '<div class="entry-title five-sixth mostra">%s</div> ', apply_filters( 'genesis_post_title_text', get_the_title() ) );
return $title;
}
//* Add the 'hide' class ( .hide {display: none;} )to not show the content that will appear by clicking on title
add_filter ('genesis_attr_entry-content', '\margine_sx_un_terzo');
function margine_sx_un_terzo ( array $attributes ) {
$attributes['class'] .= ' hide';
return $attributes;
}
genesis();