WordPress

WordPress开发人员和管理员的问答


30
您的functions.php文件的最佳代码收集
请点击问题或答案左侧的向上箭头,对问题和您认为有用的答案进行投票。 与许多现在正在查看此文章的其他人一样,我一直在阅读各种博客,论坛和讨论组,以学习和提高我的wordpress技能。在过去的12个月中,我一直致力于通过向functions.php文件中添加代码来替代插件的使用。尽管我完全同意插件在许多情况下非常有用,但我的经验证明,尽管有插件存在,但在90%的使用情况下,实际使用它可能会造成不必要的复杂性和兼容性问题。另外,在很多情况下,此类插件添加了我不需要或不需要的菜单和其他管理元素。 我经常发现通过分析插件的代码,我可以剥离我想要的代码并将其硬编码到我的functions.php。这为我提供了所需的确切功能,而不必包含不必要的元素。 因此,这篇文章的目的是我试图吸引您(读者/管理员/开发人员)与我和其他人在这里分享您认为有用的任何代码位,这些代码位已添加到主题function.php文件中以扩展或增强WordPress,而无需使用插入。 当您在此处提交回复时,请给每个代码位一个标题,让我们知道您是否知道与哪个版本的wordpress兼容,包括最能描述其功能的描述,以及(如果适用)包括原始链接。您在其中找到信息的插件或来源。 我期待着您的所有答复,当然,无论何时发现它们,我都会不断添加自己的新发现。


5
何时使用WP_query(),query_posts()和pre_get_posts
我读了@nacin的《 你昨天不知道查询》,并被发送了一个查询兔子洞。昨天之前,我(错误地)使用query_posts()了所有查询需求。现在,我对使用会更明智WP_Query(),但是仍然有一些灰色区域。 我想我肯定知道的是: 如果我要在页面上的任何地方(在侧边栏中,在页脚中,任何类型的“相关文章”等)进行附加循环,我想使用WP_Query()。我可以在单个页面上重复使用它而不会造成任何伤害。(对?)。 我不确定的是 什么时候使用@ nacin的 pre_get_posts对比WP_Query()?我pre_get_posts现在应该用所有东西吗? 当我想修改模板页面中的循环时(假设我要修改分类档案页面),是否要删除if have_posts : while have_posts : the_post零件并编写自己的零件WP_Query()?还是pre_get_posts在我的functions.php文件中使用修改输出? tl; dr 我想从中得出的tl; dr规则是: 切勿使用query_posts了 在单个页面上运行多个查询时,请使用 WP_Query() 修改循环时,请执行____。 谢谢你的智慧 特里 ps:我已经看过并读过:什么时候应该使用WP_Query vs query_posts()vs get_posts()?这增加了另一个维度- get_posts。但根本不处理pre_get_posts。

13
隐藏网站使用WordPress的事实的步骤?
我有一个网站,对于我们正在使用WordPress的事实,我们会尽量保持谨慎。我们可以采取哪些步骤使其不那么明显? 编辑-重要安全说明: 请理解,按照Mark的回答,完美地做到这一点是不可能的,因此请勿将其作为安全措施。


9
使用WordPress作为CMS的提示?[关闭]
我想将WordPress用作CMS的基本网站,而不是博客。我有几个页面,目前,我不打算有一个“新闻”页面。 尽管有多种方法可以完成这项工作,但是wp-admin控制台中的重点显然是新帖,创建具有自定义内容(如地图和画廊)的页面时,感觉就像我在围绕系统而不是在系统上工作。 您对使用WordPress作为CMS有什么建议吗? 特别: 是否有围绕CMS而非博客设计的好的样板主题? 有没有什么好的插件可以帮助将WordPress视为CMS? 另外,我应该完全使用WordPress吗?


8
将wp-config移到Web根之外真的有好处吗?
如今,最常见的安全性最佳实践之一似乎是将wp-config.php目录移到高于vhost文档根目录的位置。我从来没有真正找到过一个好的解释,但是我假设这是为了最大程度地减少读取数据库密码在webroot中恶意或感染脚本的风险。 但是,您仍然必须让WordPress访问它,因此您需要扩展open_basedir以包括文档根目录上方的目录。这不仅破坏了整个目的,而且还可能将服务器日志,备份等暴露给攻击者? 还是该技术只是试图防止出现这样的情况,即在这种情况下wp-config.php任何请求的人都将其显示为纯文本http://example.com/wp-config.php,而不是被PHP引擎解析?这似乎是非常罕见的情况,并且不会超过将日志/备份/等暴露给HTTP请求的不利影响。 也许可以在某些托管设置中将其移到文档根目录之外,而无需暴露其他文件,但在其他设置中则不能? 结论: 在这个问题上经过反复的反复讨论之后,出现了两个答案,我认为应该将其视为权威的答案。亚伦·亚当斯(Aaron Adams)很好地支持移动 wp-config,而克里斯吉塔吉(Chrisguitarguy)很好地反对了。如果您不是该线程的新手,并且不想阅读整个内容,那么这是您应该阅读的两个答案。其他答案要么是多余的,要么是不正确的。

30
插件开发的客观最佳实践?[关闭]
启动社区Wiki,以收集用于插件开发的客观最佳实践。这个问题的灵感来自@EAMann对wp-hackers的评论。 想法是就可能的客观最佳实践进行协作,以便我们最终可以在某些社区协作审核过程中使用它们。 更新:在看到前几个回答后,很明显,我们每个答案只需要一个想法/建议/最佳实践,人们应该查看列表以确保发布前没有重复。

13
将分类过滤器添加到自定义帖子类型的管理员列表中?
我创建了一个名为的自定义帖子类型,'listing'并添加了一个名为的自定义分类法'businesses'。我想将商家的下拉列表添加到列表的管理员列表中。 这是此功能在帖子管理列表中的外观(我希望对“自定义帖子类型”也是如此): 这是我当前的代码(这与Gist上的代码相同): <?php /* Plugin Name: Listing Content Item Plugin URI: Description: Author: Version: 1.0 Author URI: */ class Listing { var $meta_fields = array("list-address1","list-address2","list-country","list-province","list-city","list-postcode","list-firstname","list-lastname","list-website","list-mobile","list-phone","list-fax","list-email", "list-profile", "list-distributionrange", "list-distributionarea"); public function loadStyleScripts() { $eventsURL = trailingslashit( WP_PLUGIN_URL ) . trailingslashit( plugin_basename( dirname( __FILE__ ) ) ) . 'css/'; wp_enqueue_style('listing-style', $eventsURL.'listing.css'); ...

5
如何修复自定义循环的分页?
我已经在模板文件/自定义页面模板中添加了自定义/辅助查询;如何使WordPress使用我的自定义查询进行分页,而不是使用主查询循环的分页? 附录 我已经通过修改了主循环查询query_posts()。为什么分页不起作用,如何解决?
122 loop  pagination  query 

7
是否有私人插件的更新?
如果我编写了一个私有插件,是否可以使用WordPress自动更新机制来对其进行更新? 我想封装功能,但是它特定于我自己的5个左右的博客,因此它不是公共插件资源的理想选择。但我喜欢这种易于更新的机制。 有没有办法做到这一点?
117 plugins  updates 

6
是否有可能从子弹中获取页面链接?
是否可以仅从子弹中获取页面的永久链接?我知道您可以使用get_page_link()以下代码从ID中获取页面的永久链接: <a href="<?php echo get_page_link(40); ?>">Map</a> 我很好奇是否有任何方法可以处理页面的内容-像这样: <a href="<?php echo get_page_link('map'); ?>">Map</a>
113 permalinks  pages  slug 

10
使用wp_nav_menu()显示菜单树的一部分/分支
我在WP Admin中定义了一个菜单,如下所示: 我希望每当我在父页面上时,都能够在侧栏上显示所有子链接。例如,如果用户在我的“关于我们”页面上,我希望以绿色突出显示的4个链接的列表显示在侧栏上。 我查看了wp_nav_menu()的文档,它似乎没有任何内置方法来指定给定菜单的特定节点以用作生成链接时的起点。 我创建了一种针对类似情况的解决方案,该解决方案依赖于页面父级创建的关系,但是我正在寻找一种专门使用菜单系统的解决方案。任何帮助,将不胜感激。
109 menus  sub-menu 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.