插件中的post_id总是错误的

时间:2012-08-20 作者:blues

我正在尝试让两个插件一起工作,其中一个插件使用过滤功能在每个标题周围放置一个标签。我希望它排除另一个具有自定义post\\u类型(ai1ec\\u事件)的插件的帖子。但如果id错误,我无法获取帖子类型。

add_filter(\'the_title\', \'mealingua_title_filter\', 10);
function mealingua_title_filter($title) {
   $post_id = get_the_ID();
   #some stuff
   if (is_front_page() OR is_single() OR is_page()) {
        return \'<span class="mealingua_title_container_\' . $post_id . \' mealingua_title_container">\' . $title . \'</span>\';
    } else {
        return $title;
    }
 }
但是post\\u id在某些地方总是错误的。一个是顶部的nav\\U菜单。另一个是我想修复的插件。在那里,id始终是来自站点的最后一篇帖子之一。我尝试了以下替代方案,但没有成功:

global $post;
$post_id= $post->ID;
global $wp_query;
$post_id = $wp_query->post->ID;
我如何解决这个问题?我能做什么?我很愿意乱弄这两个插件的代码,但尽管我懂PHP,但我没有wordpress插件编码的经验。谢谢你的帮助。

2 个回复
最合适的回答,由SO网友:Jeroen Schmit 整理而成

您不能使用get_the_ID() 当您不在循环中时(例如在导航菜单中)。幸运的是the_title 过滤器在一个额外的参数中附带post ID。

将您的代码更改为此,以使其在所有位置都能工作:

function mealingua_title_filter($title, $post_id) {

  #some stuff
  if (is_front_page() OR is_single() OR is_page()) {
    return \'<span class="mealingua_title_container_\' . $post_id . \' mealingua_title_container">\' . $title . \'</span>\';
  } else {
    return $title;
  }
}

add_filter(\'the_title\', \'mealingua_title_filter\', 10, 2);

SO网友:Ivijan Stefan Stipić

为什么不从permalink获取ID?这是可能的。您可以通过永久链接解析URL来检查帖子ID是否不存在,或者直接检查GET if is permalink off。WP有很多获取ID的方法。

您还可以使用此功能:

https://codex.wordpress.org/Function_Reference/url_to_postid

结束

相关推荐

Plugins_url()错误地返回带有www子域的URL

我正在开发一个插件,为了回答这个问题,我们称之为“我的插件”。我的插件目录如下所示:my-plugin/ |- image.jpg |- script.js |- script.php |- plugin.php |- ajax.php 在脚本中。php我有一段代码指定了一些JS。在其中,我需要一个ajax的URL。php。e、 g.:<script type=\"text/javascript\"> foo = jQuer