WordPress模板制作中,function.php是一个特殊的文件,可以用来自定义模板中需要用到的函数,添加钩子函数等。为了为不同的模板添加不同的钩子函数,需要使用WordPress的条件标签(Conditional Tag)。
WordPress常用条件标签如下:
is_home() – 当默认主页显示时返回ture
is_front_page() – 使用页面作为首页,首页显示时返回true
is_admin() – 当控件面板或者管理员面板显示时返回true
is_single() – 当单页文章显示时(即当调用single.php模板时)返回true
is_page() – 当页面(page)显示时返回true
is_category() – 当分类(Category)页面显示时返回true
is_tag() – 当存档标签页面显示时返回true
下面是在function.php中调用条件标签为不同页面模板添加不同行为的例子 – Post Icon
这段代码在每个post页面文章开头添加一张图片,假设该图片存在于你的模板文件夹下images目录中。该filter的优先级为20,比一般的filter优先级低(默认优先级是10)
add_filter( 'the_content', 'my_the_content_filter', 20 ); /** * 在每篇文章页面开头添加一个icon * * @uses is_single() */ function my_the_content_filter( $content ) { if ( is_single() ) // 将图片添加到每篇文章开头,第二个%s代表文章原始的content内容 $content = sprintf( '<img class="post-icon" src="%s/images/post_icon.png" alt="Post icon" title=""/>%s', get_bloginfo( 'stylesheet_directory' ), $content ); // Returns the content. return $content; }
你好,我在function.php 里面尝试只给页面添加某个JS,是用is_page()这样写的:
function add_scripts() {
if(is_page()){
wp_register_script( ‘waypoints’, get_template_directory_uri() . ‘/js/waypoints.min.js’, array( ‘jquery’ ));
wp_enqueue_script(‘waypoints’);
}
}
add_action( ‘init’, ‘add_scripts’ );
测试后没有效果,这个js没有加载到页面里。
请教是哪里的问题?谢谢
用add_action( ‘wp_enqueue_scripts’, ‘add_scripts’ );试试
谢谢!我用 add_action( ‘wp_enqueue_scripts’, ‘add_scripts’ ); 还是无效。
然后在下面帖子里面看了看
http://stackoverflow.com/questions/3245063/problem-with-is-page-conditional-in-wordpress
最后换成了add_action( ‘wp’, ‘mnxw_add_scripts’ );正常工作了。
我是新手,没搞懂add_action时候“init”“wp_enqueue_scripts” 等几个参数的区别 ~
如果无效,那一定是你主题的问题了,我把你那段代码换成wp_enqueue_scripts,随便放一个主题里就有效,wp和wp_enqueue_scripts代表程序执行的顺序,他们不是简单的参数!
如果你不明白,看一下这个页面
http://codex.wordpress.org/Plugin_API/Action_Reference#Actions_Run_During_a_Typical_Request
用浏览器在该页搜索wp和wp_enqueue_scripts,从它们的物理位置上就能明白它们的区别了。
最好再看一下这个页面的代码示例
http://codex.wordpress.org/Function_Reference/wp_enqueue_script
好的,我晚上细读一下资料。多谢 : )
PS.你代码的问题是条件标签用的太早了,看下条件标签什么时候可以使用
https://www.solagirl.net/conditional-tags-usage.html