包含PHP文件的短代码,传递的各种参数要包含吗?

时间:2017-10-22 作者:bpm-jax

希望在WP内容中包含php文件。某些参数会因包含而有所不同。

我想写一个包含短代码的代码。我do not 希望为每个包含文件编写不同的包含函数。

短代码示例:

[包括文件路径=\'/包括/狗。php“color=\'black\'size=\'large\']

[包括文件路径=\'/includes/table.php“type=\'dogs\'number=\'5\'sort=\'desc\']

函数包含文件后,所有其他参数将传递给THAT file. 这可能吗?

此代码已关闭,除了获取包括的所有其他参数:

// SHORTCODE - Include File
// http://www.amberpanther.com/knowledge-base/using-the-wordpress-shortcode-api-to-include-an-external-file-in-the-post-content/
+

function include_file($atts) {
  //check the input and override the default filepath NULL
  //if filepath was specified
  extract(shortcode_atts(array(\'filepath\' => \'NULL\'), $atts));
  //check if the filepath was specified and if the file exists
  if ($filepath!=\'NULL\' && file_exists(CHILD_SS_DIR.$filepath)){
  //turno on output buffering to capture script output
  ob_start();
  //include the specified file
  include(CHILD_SS_DIR.$filepath);
  //assign the file output to $content variable and clean buffer
  $content = ob_get_clean();
  //return the $content
  //return is important for the output to appear at the correct position
  //in the content
  return $content;
  }
}
//register the Shortcode handler
add_shortcode(\'include\', \'include_file\');
想要比使用PHP包装器插件更安全的东西吗!提前谢谢你。

Clarifications 以上是示例代码,我甚至不确定是否会使用它。Shortcode参数1是包含文件。include本身应该可以访问此参数之后的任何参数。

Why do this? 如果不使用像Insert\\u PHP或Allow PHP in Pages这样的危险的PHP解释插件,我不知道如何在WP之外包含来自DB或文件的内容。这些插件允许运行任何PHP代码,这是一种安全风险。我只想将参数传递给每个include文件。

Explain your Example

[包括文件路径=\'/包括/狗。php“color=\'black\'size=\'large\']

Filepath是include(dogs.php)。当狗。php包含$color=“black”和$size=“large”用于狗的代码。php

我希望函数将filepath之后的任何参数传递给include。这意味着我不必为每个不同的include编写函数。

This is a Bad Idea

请提供更好的解决方案。我不是WP开发人员。我有足够的PHP知识来编写自定义函数,但无可否认,我对WP的所有方面都缺乏全面的了解。

我的问题的基础是观察许多带有短代码的WP插件。它们基本上按照我的要求执行:传递参数并生成内容。

提前感谢您的时间。

1 个回复
SO网友:bpm-jax

感谢您的评论和指导。我实施的解决方案并没有彻底改变方向盘。

复杂的是找到一种方法,从页面和帖子中删除[insert\\u php][/insert\\u php]包装的代码,并且仍然保留内容和用户体验。

Custom Template Pages

几乎完全是PHP的页面和帖子被制作成自定义模板文件。这些已放置到“我的子主题”文件夹中。旧帖子和页面已更新为自定义模板。

对于大型网站,我建议编写一个命令行脚本来批量更新帖子模板。或者,使用一个好的插件。

Created Short Codes for Content Snippets

帖子和页面中的所有PHP实例包括、表和DB调用都被重写为短代码。这些代码被添加到我的孩子主题的函数中。php文件。

这保存了重要的表格、广告和图像。此外,我从PHP包装器中删除了文本,并将其放回WP内容中。这使得内容管理和与Yoast SEO等有用插件的集成更加容易。

Easier to update content

我发现定期对我的内容功能重新编码可以提高效率和维护。这类似于编辑和重写书面散文。

进行这些更改需要很长时间。不过,将来更新内容片段会容易得多!

Faster Website

删除[insert\\u php][/insert\\u php]内容和插件可提高服务器性能和页面速度。这对于SEO至关重要。Google Page Speed Insights注意到服务器响应时间有轻微但明显的改善,大多数页面的响应时间大约在0.30到0.23之间。

以前,服务器必须处理所有的WP PHP,然后在每个帖子中运行我自己的PHP。这是多余和浪费的时间。

More Secure

在WP内容内运行PHP包装会造成严重的安全漏洞。记住,这些包装允许any 要执行的PHP代码,包括MySQL、Exec等命令。这是dangerous 即使您已保护您的WP站点和数据库。

现在我的网站更安全了。另外,我建议对WP登录使用2因素身份验证。如果有人进入并运行PHP代码(或安装PHP包装器插件并随后运行代码),您可能会遇到大麻烦!

2因素登录增加了额外的安全层,即使您的密码被泄露。我推荐使用Google Authenticator的插件。

Do PHP Plugins Have Any Valid Purpose?

在这一点上我不确定。考虑到巨大的安全风险,我不建议大型、高流量网站使用它们。

如果您在代码中包含对非WP DB的DB登录、密码和SQL查询,我绝对不会推荐它们。如果必须,请确保DB用户仅限于一个数据库并“选择”查询。Do NOT give such users global privileges.

它们可能有助于测试。对于新手来说,在尝试内容和设计思想时使用这些插件比定制模板编码要容易得多。但我强烈建议在测试完成后这样做。

最后,如果可以限制PHP命令和输出,这些插件的风险可能会更小。

结束