好的,让我们看看如何在代码中使用。...('hook', 'function_3', 5); // 最先加载 注意这些都没有参数(我们将在下面讨论),只有后两个使用了优先级。...more_text'] ) ); else the_content( esc_html( $instance['more_text'] ) ); } } 如您所见...因为相同的动作并不会重复执行,并且因为remove_action依赖于已经存在的add_action,所以这让我可以使用非常简单的代码将我的函数从一个钩子移动到另一个钩子。...本系列的下一部分将介绍如何在Genesis文件中查找需要的动作(action)并在子主题中更改它们。
如何在 WordPress 中安排任务,这是在 WordPress 2.1 中就引入的功能。...本人针对这个功能翻译过一篇文章:如何在 WordPress 安排任务,建议大家在继续之前,好好阅读下那篇文章。...前面我们通过把沙发排名信息保存到数据库中,再有留言之后再进行更新,这样的操作来提高沙发插件的执行效率,今天来谈谈另外一种提高插件执行效率的方法,定时去更新沙发沙发的排名信息到数据库中来提高效率。...下面我们来讲解如何实现: 首先注释掉 sofa_comment_post 和 add_action('comment_post', 'sofa_comment_post');。...然后添加如下代码: //创建自定义的更新沙发排名信息的事件,调用更新沙发排名信息的函数add_action('update_sofa_event', 'update_sofa'); //定义任务,调用更新沙发排名信息的事件
', 'disable_all_feeds', 1); add_action('do_feed_rss2', 'disable_all_feeds', 1); add_action('do_feed_atom...', 'disable_all_feeds', 1); 这种方法实现的效果是,当你打开博客的feed地址(如https://www.xxx.org/feed)时,页面会直接显示设置的错误信息,feed代码已经被删除...$feed, 'wpse33072_remove_feeds', 1 ); } unset( $feed ); // 当执行 do_feed action 时重定向到首页 function wpse33072...wpse33072_kill_feed_endpoint() { global $wp_rewrite; $wp_rewrite->feeds = array(); // 运行一次后,...插件版 点此下载插件 下载后解压,将remove-feeds目录通过ftp上传到网站的wp-content/plugins目录,然后在WordPress后台 - 插件中,启用这个插件即可: Remove
简单的来说,两者的区别主要是下面这样的: Action 函数在被调用时,是可以直接调用的,自定义的函数无需提供返回值; Filters 函数在被调用时,会被传入一个具体的字符串,函数执行完成后,还需要将这个字符串返回给系统...比如在开发过程中,可能会用到 get_header 这个函数,该函数在执行时,首先会调用 do_action,那么,在 get_header 上挂载的函数就会执行,执行完成后,再执行后面的函数。...add_action add_action 可以将我们自定义的函数加到特定的 Hook 上去,等待执行。一般来说,我们只需要执行如下命令即可。...如果这个 Hook 提供了调用的说明,可以直接根据上面的 add_action 的函数参数来判断这个 Hook 支持几个参数。...了解到参数后,就可以使用这些参数,来执行一系列操作了。 虽然你可能查到了有三个参数,可以不使用三个参数,比如只使用前两个。
比如调用最新文章、热门文章、自定义文章类型文章循环输出等。 在官方手册中也有介绍到:wp_query,支持多种 sql 语句的 比较符号: ? 看!...开始主循环 while ( $result->have_posts() ) : $result->the_post(); //获取到特定的文章 // 要输出的内容,如标题...开始主循环 while ( $result->have_posts() ) : $result->the_post(); //获取到特定的文章 // 要输出的内容,如标题...); global $post; $post_title = get_the_title(); // mb_stripos 不区分大小 判断字符串中是否存在另一个字符串...( 'wp_ajax_nopriv_search', 'search' );add_action( 'wp_ajax_search', 'search' ); 调用方式: 示例:https://zhaoshuai.me
你要自己写一个函数,并使用add_action()把它挂载到某一个钩子上。 (请记住,add_action(), remove_action() 实际上只是指明了代码要在什么位置执行)。...“generic”是函数名,这样你就可以用这个名字来调用代码并执行,而不是每次都要写同样的一大啪啦的代码。当然,这个例子中没那么多代码,也不会节省太多打字量,但在实际开发中它可能会有很多代码。...需要在标题之前执行代码吗? add_action( 'genesis_before_header', 'generic' ); 关于怎么使用其他钩子和动作来调整位置,可以看之前的两篇文章。...') ) add_action( 'genesis_after_post_content', 'ADDTOANY_SHARE_SAVE_KIT' ); 如何调用Genesis函数 “调用函数...就像你可以在钩子中使用另一个函数一样,你可以在也不使用钩子的情况下调用Genesis函数。 一个很好的用法就是在自定义 home.php 文件中。
> 但是 WordPress 不能确定是否在在页面加载了 JS,Css 文件,如果另一个插件使用相同的 JS,Css 文件,就无法检查 JS,Css 文件是否已经被包含在页面中。...您可以使用函数,如 get_template_directory_uri() 来获取主题目录中的样式文件。永远不要去想硬编码了! $deps (数组,可选)处理相关样式的名称。...my_init' ); 注册脚本时需要运行 $wp_scripts->add( $handle, $src, $deps, $ver );,若脚本没有注册直接使用 wp_enqueue_script,需要先调用...问题来了:这部分内容显然是在 wp_footer 之前出现的,那么这段代码就在 jquery.js 文件之前出现了,导致该代码段实际上无法工作,因为调用 jQuery 方法的代码段必须比 jquery.js...文件后加载。
archive.php :包含操作归档页面的动作,如归档页面的标题输出 comments.php :包含操作评论的动作,如评论的提交表单 footer.php :用于页脚的动作,包括页脚上的widget...控制菜单的输出 post.php :基本上这是在循环内加载的所有东西 search.php :用于搜索页面的动作 sidebar.php :用于创建用于侧边栏的钩子和动作(仅在被layout.php文件调用了的情况下执行...你要做的就是找到需要被删除的动作,将其复制到子主题functions.php文件中,然后将把”add_action()”更改为“remove_action()”。...过滤器会在另一个教程里讲,所以我们暂时忽略它。要移除或移动一个动作,可以不用依赖于函数,所以我们可以忽略上面的函数。我们所需要的只是一行。...代码就在文件的顶部 add_action('genesis_loop', 'genesis_do_loop'); 很简单。这会加载一个函数来决定使用哪个循环,我们先绕过。
每一个钩子方法都有特定的名称以及定义,例如 save_post ,表示当一篇文章被保存时需要执行的代码,WordPress在调用这个方法时,会给我们传入被保存的文章ID。...', 10, 1); add_action 是由WordPress定义的函数。...这样上述代码就会被执行,我们的插件就利用 add_action 函数的调用,把发送邮件的功能注册在了 save_post 这个钩子方法上。...到了保存文章的时候,WordPress会调用 save_post 这个钩子方法——它首先查找钩子方法的注册列表,找出有哪些函数注册在了 save_post 上,然后根据优先级顺序依次调用执行。...然而有利必有弊,这样做的代码执行速度肯定是没有直接调用函数来得快。不过对于WordPress这样的强调高可扩展性的工程,使用这样的技巧显然是利大于弊的。
通过 wp_enqueue_script 函数加载 js 文件时,应该将它分配给一个钩子,如只在前台调用,使用钩子 wp_enqueue_scripts;只在后台调用,使用 admin_enqueue_scripts...只在前台调用 <?...'/js/bootstrap.js'); } add_action( 'wp_enqueue_scripts', 'tone_front_script' ); ?> 只在后台调用 <?...'/js/bootstrap.js'); } add_action('admin_enqueue_scripts', 'tone_admin_script'); ?...'/js/jquery.min.js' ); } add_action('admin_head', 'admin_jscss'); ?>
为插件创建类主要是规范,避免与其他插件的方法重名,方便调用 定义插件类 以上一篇文章编写的插件为例 class my_change_font_style{ } 在构造方法调用HOOK function...__construct(){ //创建菜单 add_action('admin_menu',array($this,'my_create_menu'));...} 这里以字符串调用方法的方式与之前不同 array($this,'方法名称') 调用插件需要的方法并实例化类 我们将之前的插件精简如下 <?...php } } new my_change_font_style(); 打开后台程序正常执行 接下来我们将之前的插件转换为类的方式 <?
我们都知道wordpress文章发布后都是按照发布时间进行排位,最新发布的在最前面。但是有的网友使用wp作为论坛,就需要新的排序方式。比如按最新评论排序。...(注意:执行完代码后立刻删除,否则会一直执行) add_action('init', 'update_all_templates_to_new'); function update_all_templates_to_new...(){ $args = add_action('init', 'update_all_templates_to_new'); function update_all_templates_to_new...(){ $args = 2.使用sql语句 将下列SQL语句添加到phpmyadmin面板中SQL输入框中并执行2.使用sql语句将下列SQL语句添加到phpmyadmin面板中SQL输入框中并执行...', 'ludou_comment_meta_add');add_action('delete_post', 'ludou_comment_meta_delete');add_action('comment_post
我们需要根据自己的条件进行一些配置,这可以让以后的站点运行更稳定 前期准备 安装宝塔Linux面板,安装Linux工具箱,安装LNMP或LAMP环境 添加计划任务,定期释放内存,建议设置每天释放一次,执行时机为半夜...,如:3:30 打开Linux工具箱添加Swap Swap推荐值: 物理内存 Swap 512M 1024M 1GB 1500M 2GB 2048M 4GB 4096M 6GB+ 4096M 安装PHP...宝塔官方运维团队 亮哥的文章,点我查看原贴 【可选】wordpress 环境设置 在宝塔上的wordpress的站点设置中设置,访问限制,添加”wp-content/uploads”目录,设置为禁止执行...; } add_action('do_feed', 'wpjam_feed_disabled', 1); add_action('do_feed_rdf', 'wpjam_feed_disabled...', 1); add_action('do_feed_rss', 'wpjam_feed_disabled', 1); add_action('do_feed_rss2', 'wpjam_feed_disabled
文章类型 $context:显示位置 $priority:优先级 接下来开始从0写一个字段吧 1、注册一个 Meta Box 示例: add_action...( 'add_meta_boxes', 'product_director' );//创建字段,注册作用function product_director() {//创建字段时调用的函数 add_meta_box...php} 3、提示:添加上面代码后,新建文章时,在右则就可以看到一个产品价格的输入框。...' );//在保存文章时,执行回调函数function product_director_save_meta_box($post_id){//回调函数,显示表单,用于新建和编辑显示表单 // 安全检查...4、如何调用? <?
完成注册后,到您的API证书区域复制您的API密钥并将其粘贴到上述配置页面中。 构建机器学习反垃圾邮件插件 第一步,创建一个名为“机器学习反垃圾邮件”的文件夹。...为了能够轻松地调用Datumbox API,我们下载了PHP Datumbox API客户端,并在之前的文件夹中复制了DatumboxAPI.php文件。...function_exists('add_action')) { die(); } add_action('admin_menu', 'machinelearningantispam_admin_menu...该函数检查选项并调用DatumboxAPI服务,以验证评论是否为垃圾邮件、成人邮件还是负面邮件。...第一个函数使用Datumbox PHP API客户端来调用API函数。第二个函数用来检查插件是否被配置为阻止垃圾邮件、成人和负面评论的状态,如果启用这项功能则调用API。
有人可能会通过创建一对额外的动作/函数对来实现这一点,但实际上并不需要这样,事实上,你可以使用一些条件语句,并根据要执行的位置来改变相似的代码,这样就可以只写一个函数但可以在多个地方执行。...add_action( 'genesis_before_post_content', 'child_content_conditional_adsense', 15); add_action( 'genesis_after_post_content...这就是条件处理,我将在另一个教程中更详细地解释。用下面这段代码即可以有条件的处理我们需要的东西。...add_action( 'genesis_before_post_content', 'child_content_conditional_adsense', 15); add_action( 'genesis_after_post_content
前面介绍了如何在侧边拦设置登录窗口,其中 Brezeck 由于使用 Widget 不好使用这个插件,于是今天去查了下怎么写 Widget 插件(可能需要代理才能访问),花了1个小时写了这个 Widget...下载后,解压缩,把 widget_sidebar_login_panel.php 上传到 plugins 目录下,到管理界面激活即可。...然后又从 WordPress Widgets 说明文档上知道:不要在插件导入之后执行任何代码,并使用 plugins_loaded 这个hook。...从而得知 add_action 的对象是 plugins_loaded。 综合以上,得到以下代码: <?...php } register_sidebar_widget('Sidebar Login Panel Widget', 'widget_sidebar_login_panel'); } add_action
WP_Query对象用于对 WordPress 数据库执行自定义查询。插件和主题使用此对象来创建他们的自定义帖子显示。 当插件使用易受攻击的类时,就会出现该漏洞。...( 'wp_footer',[$this,'get_document_data'],99);// debug line comment it add_action( 'wp_ajax_ecsload'...接下来,它调用get_sql方法,该方法最终调用get_sql_for_clause从用户提供的数据创建 SQL 语句的子句。...后来在get_posts方法中,这个查询是通过$wpdb->get_col()方法执行的,这里出现了SQL注入条件。...虽然这是信息泄露而不是代码执行的问题,但暴露的数据可能对攻击者很有价值。在不久的将来,在主动攻击中看到这个错误并不会让我们感到惊讶。我们建议尽快应用补丁或采取其他补救措施。
执行时注册的各种钩子,将会在指定事件发生时触发执行。...2.关键点 只有被激活的插件,才会在每次网页请求时被调用执行。...plugin_name/uninstall.php ,在插件被卸载时调用执行。 plugin_loaded,插件加载完毕时触发。...4.添加、移除、执行钩子 可以使用 add_action() 、add_filter函数来添加我们自己的钩子,通过我们自己的自定义钩子,其他开发者可以通过扩展或修改我们的插件来适应他们的需求。...2.加载顺序 经过实际测试,插件先于主题加载,主题在插件加载完毕后开始加载。
有时主题在提交评论后会刷新整个网页才可获取资源,别人家的都不是这样的,以下可以改善评论后无刷新即可获取资源。 在function.php文件加入以下代码 <?...do_action('set_comment_cookies', $comment, $user); $GLOBALS['comment'] = $comment; //根据你的评论结构自行修改,如使用默认主题则无需修改...php die(); } endif; add_action( 'wp_enqueue_scripts', 'fa_ajax_comment_scripts' ); add_action...('wp_ajax_noprjiv_ajax_comment', 'fa_ajax_comment_callback'); add_action('wp_ajax_ajax_comment 新建app.js
领取专属 10元无门槛券
手把手带您无忧上云