在帖子标题前添加带有_TITLE的代码会产生奇怪的结果

时间:2020-04-23 作者:Robert Brax

add_action (\'the_title\' , \'test\'); 

function test($title) {

    $mycode = \'<div>test</div>\';

    echo $mycode . $title;

 }
我期待这个功能。php代码在帖子标题前添加“test”。它做到了这一点。但它在页面上的所有位置都添加了它。不确定逻辑是什么,它似乎将其添加到页面的所有菜单项。

我对\\u标题的使用是否有误?或者这里可能有主题干扰?

1 个回复
最合适的回答,由SO网友:Antti Koskinen 整理而成

the_title 过滤器有两个传递给它的参数,$title$id. 您可以使用$id 检查当前的帖子类型,然后在此基础上进行操作。

add_action (\'the_title\' , \'test\', 10, 2);
function test($title, $id) {
  return \'post\' === get_post_type($id) ? \'<div>test</div> \' . $title : $title;
}
这方面的问题是,过滤器不知道在哪个上下文中调用它(当然WP条件提供了一些上下文)。因此,您可能会得到意外的结果,并最终在单个视图的任何位置显示自定义标题前缀/后缀,例如主菜单、主标题、相关帖子、侧栏、页脚。。。,即使您只想对视图的一部分进行修改。这当然取决于您的设置、需求和用例。

相关推荐

Conditional action hooks

我正在开发一个使用AJAX的插件,但我在控制代码流方面遇到了困难。我想在运行条件后挂接函数。我的钩子在控制结构内部添加时不会启动,但在外部会启动。我还有一个触发AJAX请求的事件,这只能在用户点击触发事件后,在加载所有DOM之后发生。AJAX请求告诉PHP函数设置cookie。它设置了cookie,但在阅读关于cookie的PHP文档时,我发现它们只能在发送任何输出后设置,但我还是做到了这一点?我读过WordPress初始化序列,但这并没有帮助我解决这个问题。这是我的密码:add_action(\'wp_