始终遇到在WordPress中使用ID作为最终解决方案的问题

时间:2019-02-27 作者:greenman0914

我正在学习Wordpress开发。

我注意到,每当我遇到问题时,我通常会在web上查看类似问题的解决方案。

无论如何,我想问的是,我注意到,大多数时候,使用ID的解决方案正在被使用。我认为这不是一个通用的解决方案,如果其他人和他们的Wordpress机器/环境使用这个主题,那么这些ID就会改变。

所以我的问题是,为什么人们接受ID作为最终解决方案。我认为这不是最好的动态解决方案,因为它会改变。无论是页面ID、帖子ID,还是每个使用ID的预制函数。

还有,有没有更好的动态解决方案?

或者我错过了一些身份无法改变的东西?

感谢您提前回复。我很想听听你对这件事的想法,因为这件事可能已经困扰了我2个月了。

2 个回复
SO网友:Jacob Peattie

你完全正确,硬编码特定的ID是个坏主意。ID很容易更改,通过UI的正常活动可能会导致任何需要特定ID的代码出现问题,这使得它们很脆弱。

但是,当您看到涉及特定ID的解决方案时,您需要记住,许多解决方案的范围,尤其是本网站上的解决方案,仅限于用户询问的特定问题。

作为一个非常简单的示例,用户可能会问“如何打印特定页面的标题?”,建议的解决方案如下:

echo get_the_title( 12 );
在哪里12 是特定页面的ID。

硬编码ID12 这确实是一个坏主意,但所有这些解决方案都是为了告诉用户,您可以输出一个页面标题&mdash给定其ID;使用函数get_the_title(). 身份证的来源与所问的问题无关。

因此,在实现该解决方案时,用户可能需要想出一种方法来允许该ID是动态的。他们究竟如何做到这一点,与解决方案所涉及的问题是一个单独的问题,并将取决于上下文。如果他们在这个网站上需要帮助,那么就需要一个单独的问题(如果还没有人问过,几乎可以肯定已经问过了)。

用户可能希望从当前帖子中获取ID,或者可能是通过Customiser或Settings API保存在数据库中的值,或者可能是通过查询字符串中的URL传递的值。有很多选择,但关键是,如何获取动态ID与如何使用ID进行操作是一个单独的问题,大多数解决方案都希望,如果您需要动态的ID,您可以将该解决方案与这些解决方案中的任何一个结合起来,使ID成为动态的。

这是另一件需要记住的事情:像这样的网站的目的是帮助你学习如何使用WordPress进行开发。这不仅仅是为了做免费的工作,并为您提供代码,以便将其应用到您的站点或项目中。任何给定的答案都可能集中在所问的特定问题上,而不是完全形成的临时解决方案。提问者需要使用一些开发技能来将解决方案正确地集成到他们的项目中。

SO网友:Qaisar Feroz

无论如何,我想问的是,我注意到,大多数时候,使用ID的解决方案正在被使用。我认为这不是一个通用的解决方案,如果其他人和他们的Wordpress机器/环境使用这个主题,那么这些ID就会改变。

wordpress安装中各种对象的ID保持不变。因此,使用主题并不重要。

或者我错过了一些身份无法改变的东西?

ID未更改,因为it is unique identifier for an object 数据库中的(帖子、页面、分类法、术语、用户、菜单、站点等)。