2014-10-31 37 views
0

我拼命让我的WordPress的enque脚本工作。不知道我做错了什么,尝试了很多,但似乎没有任何工作。WordPress的if(if_page)和页面模板不工作

我有一个tittle Ledenlijst,id = 69的页面。 我只想对该页面进行排队。所以我试图增加到functions.php:

// Funtion to include stylesheet for page ledenlijst. 
function enqueue_child_theme_styles() { 
    wp_enqueue_style('parent-style', get_template_directory_uri().'/style.css'); 
    wp_enqueue_style('child-style', get_stylesheet_uri(), array('parent-style') ); 
} 
// Function to add ledenlijst 
function add_ledenlijst() { 
    wp_enqueue_script(
     'your-script', 
     get_template_directory_uri() . '-child/ledenlijst.js', 
     array('jquery') 
    ); 
} 

if(is_page('ledenlijst')){ // Only on ladenlijst page 
echo "Page ledenlijst identified"; // debug 
    // Register Stylesheet 
    add_action('wp_enqueue_scripts', 'enqueue_child_theme_styles', PHP_INT_MAX); 
    // Register ledenlijst script 
    add_action('wp_enqueue_scripts', 'add_ledenlijst'); 
} 

由于某些原因,它不被识别。我也尝试过: 如果(is__page(69), A已经复制了默认页面,在我的子主题文件夹中创建了pageLedenlijst.php,将该主题应用到此页面并尝试: if(is_page_template('pageLedenlijst.php')

没有什么工作,没有显示调试中,enque schript将不会加载。

+2

尝试在函数中添加is_page()代码,并在诸如“wp_loaded”之类的钩子中调用它。 – WisdmLabs 2014-10-31 12:43:10

回答

1

你试过吗?

你只需要一个函数来排队,然后你检查,如果你的页面是in是你想要排队剧本的页面。

I t眨眼你正在使用一个儿童主题,这个脚本(ledenlijst.js)是在你的孩子主题不在父主题,我是对吗?如果是的话是回答你必须改变get_template_directory_uri()get_stylesheet_directory_uri()因为get_template_directory_uri()(儿童主题的上下文时),它调用父主题目录和get_stylesheet_directory_uri()指儿童主题目录

function enqueue_child_theme_styles() { 
    wp_enqueue_style('parent-style', get_template_directory_uri().'/style.css'); 
    wp_enqueue_style('child-style', get_stylesheet_uri(), array('parent-style') ); 
    if(is_page(69)){ 
     wp_enqueue_script('your-script', get_template_directory_uri() . '-child/ledenlijst.js', array('jquery')); 
    } 
} 

资源:
get_template_directory_uri()
get_stylesheet_directory_uri()

对不起,我的英文不好

+0

我试过了,但没有奏效。我做了什么,是我移动了 \t add_action('wp_enqueue_scripts','add_ledenlijst');到页面模板。现在它工作,但我认为这不是一个非常整洁的解决方案。我认为阿南德有一个点的情况下命令.. sugggestions更好的解决方案,不需要页面模板,欢迎 – Rtenklooster 2014-10-31 14:14:19

+0

@Anand我知道'is_page'不能在functions.php上工作,但是当挂钩到像'wp_enqueue_scripts'这样的钩子上的函数被挂钩到'wp_head'上,并且在那一点上它已经知道哪个页面已经被加载了。我只是不明白,为什么你会在这个代码工作的时候低估它。 – 2014-10-31 14:21:24

+0

@ user2886088当您测试代码时发生了什么?任何错误?任何在控制台上?这只是一个页面?首页?家? – 2014-10-31 14:23:01

0

感谢马科斯, 确实有效。我再次尝试,忘了更改get_template_directory_uri()。

此代码:

function enqueue_child_theme_styles() { 
    wp_enqueue_style('parent-style', get_template_directory_uri().'/style.css'); 
    wp_enqueue_style('child-style', get_stylesheet_uri(), array('parent-style') ); 
    if(is_page(69)){ 
    wp_enqueue_script('your-script', get_template_directory_uri() . '-child/ledenlijst.js', array('jquery')); 
    } 
} 
add_action('wp_enqueue_scripts', 'enqueue_child_theme_styles', PHP_INT_MAX); 

无需自定义页面/模板了。满意的解决方案!

+0

=)乐于帮助。根据你的回答在这里修改我的答案 – 2014-10-31 14:44:56