Wordpress 中的自定义代码:编程限制是什么?
Custom code in Wordpress: what are the programming limitations?
我有一个网站 (www.easterisland.travel),我正在考虑将其转换为 Wordpress 网站。为什么?主要有以下几个原因:
1:使用CMS,这样我就可以教别人在没有编程知识的情况下进一步向网站添加内容。不过高级页面我自己建,其他人管理的页面都是简单的信息页面。
2:访问所有这些很棒的插件,例如每个页面底部的 "similar pages" 插件(我还没有找到作为原始网页的独立解决方案),这真是太棒了让人们继续阅读。
在我的网站上,我有很多自定义内容,例如我创建的预订系统。有一个从数据库数据自动生成的 AngularJS 购物车 (www.easterisland.travel/tours/), instant online booking and payment (using PayPal's Express Checkout) etc. There's a page for cruise ship shore excursions (www.easterisland.travel/cruise-ship/),我创建了一个系统,我可以在其中添加游轮和岸上游览(添加正确的行程、价格、信息等)。乘客还可以登录并与同一组中的其他未来同行交流,并安排在旅游当天会面。我还有很多计划要做,例如显示酒店信息、显示 TripAdvisor 数据(使用 TripAdvisor API)等
百万美元的问题是:
1) 所有这些都可以在 Wordpress 站点中实现吗?我可以使用这个平台添加所有这些系统吗?有什么限制?
2) 改用 Wordpress 有意义吗?
3) 应该使用什么实现?我不希望我的代码在 Wordpress 自动更新时被删除或更改。
谢谢!
是的,你可以做到这一切。您将需要了解 wordpress 主题和插件的人,但这是可能的。 wordpress 的美妙之处在于,您可以编写 "bare" php 代码,并且与 wordpress 交互的少量功能都有很好的文档。
Wordpress 本身是结构化的 "simple"(与 magento 等花哨的工具相比)。所以它管理的只是帖子/页面/...,它们或多或少来自同一个数据库对象。您可以为这些东西添加功能(例如,发布游轮帖子和其他岸上游览帖子),或者您可以在顶部添加您自己的数据库结构。
主题系统是裸 php 代码,因此您不必爬过一千行 xml 代码来调整小东西。
Wordpress 的强大之处在于其 "core wordpress" 的简单性和基于所有这些插件的功能量。我相信很多人会说,你应该选择一个定制的解决方案(例如基于 symfony),或者一个已经带有更多你想要的功能的 CMS(比如 magento,它包含结帐/贝宝),但我(作为一个wordpress的粉丝)觉得用wordpress没问题。
我从来没有找不到一个插件来做我需要的!我管理着三个 WordPress 网站 - 尽管其中 none 是商业网站。 (游艇俱乐部、自行车俱乐部和政党 EDA)。
有一个允许在任何 WordPress 页面上 PHP 的插件,但这意味着所有编辑都必须使用文本 (HTML) 视图而不是可视选项卡来编写。我发现这对我的一些页面很有用 - 我是唯一的 "Editor."
还有一个插件可以让你在Widget中编码PHP。那就没有上面的缺点了。
Wordpress 没有任何限制,如果它无法通过插件或自定义代码完成您需要的功能,您可以扩展其默认功能。在很多方面,拥有一个框架总是比从头开始构建要好。
但是,wordpress 最初是作为博客平台设计的,如果您打算扩展它的简单功能,您应该花一些时间来了解它是如何工作的,以正确地集成您的自定义需求,否则事情可能会变得丑陋,
如果你知道如何与数据库交互,你可以轻松地做你想做的事,你可以根据你的数据库交互需要使用内置函数,或者如果不适合你自己创建非常好。
只是对 wordpress 数据库的快速概述。
wp_posts
- 站点主要前端数据的存储位置,如帖子、页面,
wp_postmeta
- 存储在 wp_posts
上的额外数据
wp_comments
- 存储 wp_posts
用户交互数据,比如评论,我之前也用过这些来存储 user/admin 消息。
wp_terms
- 用于 dividing/categorizing 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 的预订系统,但从未尝试过从头开始自定义一个,也没有有机会使用预订插件,因为从未遇到过需要简单预订系统的客户。
只是为了回答你的问题。
是的,为了比较,它可以看看 woocommerce 插件的功能和特性,我相信那比你需要的更复杂。
将一个从头开始构建的站点转换为任何 CMS(wordpress 是一个选项)是有意义的,CMS 由您决定,但最好使用您更了解的 CMS更容易集成和定制。
您可以使用您的子主题 "functions.php" 来扩展您的自定义功能,例如在您的主题中为所有自定义代码创建一个文件夹,然后 include/require 它在您的子主题中functions.php 或更好地创建您自己的插件以正确集成它们,您可以将功能划分为插件,例如预订系统插件和支付功能插件。检查一下 https://github.com/hlashbrooke/WordPress-Plugin-Template
我希望这能给你一个想法。
我有一个网站 (www.easterisland.travel),我正在考虑将其转换为 Wordpress 网站。为什么?主要有以下几个原因:
1:使用CMS,这样我就可以教别人在没有编程知识的情况下进一步向网站添加内容。不过高级页面我自己建,其他人管理的页面都是简单的信息页面。
2:访问所有这些很棒的插件,例如每个页面底部的 "similar pages" 插件(我还没有找到作为原始网页的独立解决方案),这真是太棒了让人们继续阅读。
在我的网站上,我有很多自定义内容,例如我创建的预订系统。有一个从数据库数据自动生成的 AngularJS 购物车 (www.easterisland.travel/tours/), instant online booking and payment (using PayPal's Express Checkout) etc. There's a page for cruise ship shore excursions (www.easterisland.travel/cruise-ship/),我创建了一个系统,我可以在其中添加游轮和岸上游览(添加正确的行程、价格、信息等)。乘客还可以登录并与同一组中的其他未来同行交流,并安排在旅游当天会面。我还有很多计划要做,例如显示酒店信息、显示 TripAdvisor 数据(使用 TripAdvisor API)等
百万美元的问题是:
1) 所有这些都可以在 Wordpress 站点中实现吗?我可以使用这个平台添加所有这些系统吗?有什么限制?
2) 改用 Wordpress 有意义吗?
3) 应该使用什么实现?我不希望我的代码在 Wordpress 自动更新时被删除或更改。
谢谢!
是的,你可以做到这一切。您将需要了解 wordpress 主题和插件的人,但这是可能的。 wordpress 的美妙之处在于,您可以编写 "bare" php 代码,并且与 wordpress 交互的少量功能都有很好的文档。
Wordpress 本身是结构化的 "simple"(与 magento 等花哨的工具相比)。所以它管理的只是帖子/页面/...,它们或多或少来自同一个数据库对象。您可以为这些东西添加功能(例如,发布游轮帖子和其他岸上游览帖子),或者您可以在顶部添加您自己的数据库结构。
主题系统是裸 php 代码,因此您不必爬过一千行 xml 代码来调整小东西。
Wordpress 的强大之处在于其 "core wordpress" 的简单性和基于所有这些插件的功能量。我相信很多人会说,你应该选择一个定制的解决方案(例如基于 symfony),或者一个已经带有更多你想要的功能的 CMS(比如 magento,它包含结帐/贝宝),但我(作为一个wordpress的粉丝)觉得用wordpress没问题。
我从来没有找不到一个插件来做我需要的!我管理着三个 WordPress 网站 - 尽管其中 none 是商业网站。 (游艇俱乐部、自行车俱乐部和政党 EDA)。
有一个允许在任何 WordPress 页面上 PHP 的插件,但这意味着所有编辑都必须使用文本 (HTML) 视图而不是可视选项卡来编写。我发现这对我的一些页面很有用 - 我是唯一的 "Editor." 还有一个插件可以让你在Widget中编码PHP。那就没有上面的缺点了。
Wordpress 没有任何限制,如果它无法通过插件或自定义代码完成您需要的功能,您可以扩展其默认功能。在很多方面,拥有一个框架总是比从头开始构建要好。
但是,wordpress 最初是作为博客平台设计的,如果您打算扩展它的简单功能,您应该花一些时间来了解它是如何工作的,以正确地集成您的自定义需求,否则事情可能会变得丑陋,
如果你知道如何与数据库交互,你可以轻松地做你想做的事,你可以根据你的数据库交互需要使用内置函数,或者如果不适合你自己创建非常好。
只是对 wordpress 数据库的快速概述。
wp_posts
- 站点主要前端数据的存储位置,如帖子、页面,
wp_postmeta
- 存储在 wp_posts
wp_comments
- 存储 wp_posts
用户交互数据,比如评论,我之前也用过这些来存储 user/admin 消息。
wp_terms
- 用于 dividing/categorizing 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 的预订系统,但从未尝试过从头开始自定义一个,也没有有机会使用预订插件,因为从未遇到过需要简单预订系统的客户。
只是为了回答你的问题。
是的,为了比较,它可以看看 woocommerce 插件的功能和特性,我相信那比你需要的更复杂。
将一个从头开始构建的站点转换为任何 CMS(wordpress 是一个选项)是有意义的,CMS 由您决定,但最好使用您更了解的 CMS更容易集成和定制。
您可以使用您的子主题 "functions.php" 来扩展您的自定义功能,例如在您的主题中为所有自定义代码创建一个文件夹,然后 include/require 它在您的子主题中functions.php 或更好地创建您自己的插件以正确集成它们,您可以将功能划分为插件,例如预订系统插件和支付功能插件。检查一下 https://github.com/hlashbrooke/WordPress-Plugin-Template
我希望这能给你一个想法。