【问题标题】:Custom code in Wordpress: what are the programming limitations?Wordpress 中的自定义代码:编程限制是什么?
【发布时间】:2016-02-07 16:49:10
【问题描述】:

我有一个网站 (www.easterisland.travel),我正在考虑将其转换为 Wordpress 网站。为什么?主要有以下几个原因:

1:使用一个CMS,这样我就可以在没有编程知识的情况下教别人进一步向网站添加内容。我会自己构建高级页面,其他人管理的页面将是简单的信息页面。

2:访问所有这些很棒的插件,例如每个页面底部的“相似页面”插件(我还没有找到作为原始网页的独立解决方案),这对于留住人们来说真是太棒了阅读。

在我的网站上,我有很多自定义的东西,比如我创建的预订系统。有一个 AngularJS 购物车 (www.easterisland.travel/tours/),即时在线预订和支付(使用 PayPal 的快速结帐)等。有一个从数据库数据自动生成的游轮岸上游览页面 (www.easterisland.travel/cruise-ship/),我创建了一个我可以在其中添加游轮和岸上游览的系统(添加正确的行程、价格、信息等)。乘客还可以登录并与同一组内的其他未来同行进行交流,并安排在旅行当天见面。我还有更多计划要做,例如显示酒店信息、显示 TripAdvisor 数据(使用 TripAdvisor API)等。

百万美元的问题是:

1) 所有这些都可以在 Wordpress 网站中实现吗?我可以使用这个平台添加所有这些系统吗?有什么限制?

2) 改用 Wordpress 有意义吗?

3) 应该使用什么实现?当 Wordpress 自动更新时,我不希望我的代码被删除或更改。

谢谢!

【问题讨论】:

    标签: wordpress customization


    【解决方案1】:

    Wordpress 没有任何限制,如果它无法通过插件或自定义代码完成您需要的功能,您可以扩展其默认功能。在很多方面,拥有一个框架总是比从头开始构建更好。

    然而,wordpress 最初是作为博客平台设计的,如果您打算扩展其简单的功能,您应该花一些时间来了解它是如何正确集成您的自定义需求的,否则事情可能会变得丑陋,

    如果你知道如何与数据库交互,你就可以轻松地做你想做的事,有一些内置函数你可以根据你的数据库交互需要使用,或者如果不太适合就创建你自己的函数很多。

    只是对 wordpress 数据库的快速概述。

    wp_posts - 网站主要前端数据的存储位置,如帖子、页面,

    wp_postmeta - 存储存储在wp_posts 上的其他数据

    wp_comments - 存储wp_posts 的用户交互数据,例如 cmets,我之前也使用过这些来存储用户/管理员消息。

    wp_terms - 用于划分/分类wp_posts 数据,如类别和标签,

    wp_options - 用于后端存储数据和配置。

    您需要检查这些功能,因为您将来可能会遇到它们 https://codex.wordpress.org/Function_Reference/add_post_meta

    https://developer.wordpress.org/reference/functions/get_post_meta/

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

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

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

    https://codex.wordpress.org/Class_Reference/WP_Query

    如果您还需要数据库交互,请查看https://codex.wordpress.org/Class_Reference/wpdb

    对于前端实现,请查看https://developer.wordpress.org/themes/basics/template-hierarchy/,尽管在过去的 5 年中,除了 Genesis Framework 之外,我从未使用过任何其他 wordpress 主题,因为我不必过多地处理 HTML 代码,而且几乎所有内容都可以自定义使用操作和过滤器。我建议您使用 Theme Framework(并记住始终使用 CHILD THEME 以防止 Main Theme 升级)

    您可能还想检查 -> https://github.com/WebDevStudios/CMB2(我更喜欢使用它而不是高级自定义字段插件。)

    wordpress 中的预订系统有点复杂,我已经成功地将重力形式用作 AngularJS + Ajax 的预订系统,但从未尝试过从头开始定制的系统,也没有机会使用预订插件,因为从未遇到过想要一个简单的预订系统的客户。

    只是为了回答你的问题。

    1. 是的,作为比较,它可以看一下 woocommerce 插件的功能和特性,我相信这比您需要的要复杂。

    2. 将一个从头构建的网站转换为任何 CMS(wordpress 是一个选项)是有意义的,CMS 由您决定,但最好使用您更了解的一个,以便更轻松地集成和自定义.

    3. 您可以使用您的子主题“functions.php”来扩展您的自定义功能,例如在您的主题中为您的所有自定义代码创建一个文件夹,并在您的子主题 functions.php 中包含/要求它或更好地创建您自己的插件以正确集成它们,您可以在插件中划分功能,例如用于预订系统的插件和用于支付功能的插件。看看这个https://github.com/hlashbrooke/WordPress-Plugin-Template

    我希望这会给你一个想法。

    【讨论】:

      【解决方案2】:

      是的,你可以做到这一切。您将需要具有 wordpress 主题和插件知识的人,但这是可能的。 wordpress 的美妙之处在于,您可以编写“裸”的 php 代码,并且与 wordpress 交互的少量函数都有很好的文档记录。

      Wordpress 本身结构“简单”(例如,与 magento 等花哨的工具相比)。因此,它所管理的只是帖子/页面/ ...,它们或多或少源自同一个数据库对象。您可以为这些内容添加功能(例如,发布游轮和其他发布到岸上游览的帖子),或者您可以在顶部添加自己的数据库结构。

      主题系统是裸php代码,不用爬千行xml代码来调整小东西。

      Wordpress 的强大源于其“核心 wordpress”的简单性和基于所有这些插件的功能量。我相信很多人会说,您应该选择自定义解决方案(例如基于 symfony),或者已经带有更多您想要的功能的 CMS(例如包含结帐/贝宝的 magento),但我(作为一个 wordpress 粉丝)会认为使用 wordpress 没有问题。

      【讨论】:

      • 感谢您的评论,小鸡!我很高兴听到这些消息。根据您所说,我相信 Wordpress 对我来说会更好,因为它的简单性应该意味着它也更灵活。所以我认为这些帖子是我可以直接在 Notepad++ 中编辑的实际 php 文件? Wordpress 更新后会发生什么?它会尝试触摸我的 php 文件吗?谢谢!
      • Wordpress 核心和插件更新“绕过”您的代码。我从来没有发生过冲突。
      • @MarcusEdensky 帖子实际上存储在数据库中,而不是 PHP 文件中......您对 WordPress 的大部分自定义都将用于插件或主题,但您的内容除外,除了图像和文档等媒体将存在于数据库中并通过 WordPress 管理界面进行更改
      【解决方案3】:

      我从来没有找不到一个插件来做我需要的事情!我管理着三个 WordPress 网站——尽管它们都不是商业网站。 (游艇俱乐部、自行车俱乐部和政党 EDA)。

      有一个插件允许在任何 WordPress 页面上使用 PHP,但这意味着编辑器都必须使用文本 (HTML) 视图而不是 Visual 选项卡来编写。我发现这对我的一些页面很有用——而且我是唯一的“编辑”。 还有一个插件允许您在 Widget 中编写 PHP 代码。没有上述缺点。

      【讨论】:

      • 这是一个很好的提示,谢谢!这个插件只能在某些页面上激活吗?大多数页面只是简单的信息页面。插件叫什么?谢谢!
      • 允许 PHP 在 pages 上的一个插件适用于所有页面。可能不止一个 - 但有一个称为“允许在页面和帖子上使用 PHP”或非常相似。虽然一直没有更新。另一个,Enhanced Text Widget,“只允许 PHP 用于该类型的 Widget。
      猜你喜欢
      • 1970-01-01
      • 2011-05-09
      • 1970-01-01
      • 1970-01-01
      • 2016-04-21
      • 1970-01-01
      • 2014-04-23
      • 2018-05-20
      • 2022-01-19
      相关资源
      最近更新 更多