草庐IT

php - 自定义 wordpress 评论表单 html

coder 2024-01-03 原文

我想修改 WordPress 中评论表单的实际 HTML。我知道 WordPress 提供的 comment_form() 函数,但它实际上并没有让我修改表单的 html。我特别想做的是制作一个 Bootstrap 响应表单,这对于 comment_form() 函数提供的选项是不可能的。我试过在互联网上寻找一种方法,但无济于事。谁能指出我正确的方向?

让我澄清一下:

我希望修改实际的 FORM 并包含评论表单的 DIV 元素,而不仅仅是字段。

最佳答案

comment_form() 函数的不可自定义部分应该(理想情况下)仅限于对 WordPress 核心的安全和正确表单处理必不可少的代码。然而,事实并非如此。为了探讨这个问题,我使用了过滤器(本可以使用参数)来完全删除所有可自定义的代码。我将所有可用变量设置为空字符串,即 comment_form() 的代码页上提到的所有内容。

这是来自 comment_form() 的遗留的、不可定制的代码:

<div id="respond" class="comment-respond">
    <h3 id="reply-title" class="comment-reply-title"> <small><a rel="nofollow" id="cancel-comment-reply-link" href="/1#respond" style="display:none;">Click here to cancel reply.</a></small></h3>
    <form action="http://www.[yourdomain].com/wp-comments-post.php" method="post" id="" class="comment-form">
        <p class="form-submit">
            <input name="submit" type="submit" id="" value="" />
            <input type='hidden' name='comment_post_ID' value='1' id='comment_post_ID' />
            <input type='hidden' name='comment_parent' id='comment_parent' value='0' />
        </p>
    </form>
</div><!-- #respond -->

这一切从何而来?在 comment_form() 的代码页底部,它说......

Source Code

comment_form() is located in wp-includes/comment-template.php.

comment-template.php 已链接,您可以在浏览器中查看完整代码。 comment_form() 从第 1960 行开始。事实上,它是该文件中的最后一个函数。没有参数或过滤器可以让您修改上面的剩余代码。这些代码行或多或少都是“硬编码”的。

文本 单击此处取消回复。 是唯一在我的过滤器种族灭绝中幸存下来的文本。奇怪的是,comment_form()cancel_reply_link 的备份文本硬编码到函数中,以防它作为空字符串传递给函数。其他可过滤项目都没有硬编码备份。

对于 HTML 表单,很容易看出哪些代码是必需的,哪些是非必需的。更难判断的是哪些位对于 WordPress 表单是必不可少的。上面的一些位是动态输出的(请注意,这是开发博客上的第一条评论,没有其他回复,没有父/子评论)。

comment-template.php 中的 comment_form() 函数,您可以提取生成 WordPress 表单动态部分所需的代码。然后,使用从 comment_form() 的 codex 页面获取的默认参数,您可以拼凑出一个简单的表单,对所需的字段、标签和包装 HTML 进行硬编码。我现在正在这样做,并将我的自定义表单函数放在我主题的 comments.php 模板文件中,我只在 single.php 中使用 comments_template() 调用它(对于这个特定的主题)。

结果将是一个完整、适当、精简且平均的 WordPress 评论表。但是……它将是一个无法再使用 comment_form() 参数或相关过滤器自定义的表单,除非您继续将过滤器代码包含在您自己的评论表单函数中。既然你已经在定制它了,那可能不是问题。同样,所有 WordPress 操作也将对您或任何其他插件不可用,除非您也在自己的评论表单功能中触发了这些操作功能。同样,此时对您来说可能不是问题。

但最重要的是,如果 future 的 WordPress 更新改变核心处理表单的方式,生成的表单可能会破坏您的主题。

如果您意识到这些风险,您或许可以通过复制 codex page for comment_form() 上的代码来重建一个手工编码的评论表单。在wp-includes/comment-template.php .我没有完成的代码,否则我会发布它。但如果我成功了,我会发布。

好吧,我暂时就这些了。请记住(所有读者),尽管出现,我是一个业余 WordPress 主题开发人员,我对 PHP 和 WordPress 的熟练程度非常初级。写这篇文章我学到了很多东西。

我还担心某个地方已经有一个完整且合适的解决方案,但我没有在搜索中找到它。

关于php - 自定义 wordpress 评论表单 html,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19973089/

有关php - 自定义 wordpress 评论表单 html的更多相关文章

  1. ruby - Facter::Util::Uptime:Module 的未定义方法 get_uptime (NoMethodError) - 2

    我正在尝试设置一个puppet节点,但ruby​​gems似乎不正常。如果我通过它自己的二进制文件(/usr/lib/ruby/gems/1.8/gems/facter-1.5.8/bin/facter)在cli上运行facter,它工作正常,但如果我通过由ruby​​gems(/usr/bin/facter)安装的二进制文件,它抛出:/usr/lib/ruby/1.8/facter/uptime.rb:11:undefinedmethod`get_uptime'forFacter::Util::Uptime:Module(NoMethodError)from/usr/lib/ruby

  2. ruby - 使用 ruby​​ 将 HTML 转换为纯文本并维护结构/格式 - 2

    我想将html转换为纯文本。不过,我不想只删除标签,我想智能地保留尽可能多的格式。为插入换行符标签,检测段落并格式化它们等。输入非常简单,通常是格式良好的html(不是整个文档,只是一堆内容,通常没有anchor或图像)。我可以将几个正则表达式放在一起,让我达到80%,但我认为可能有一些现有的解决方案更智能。 最佳答案 首先,不要尝试为此使用正则表达式。很有可能你会想出一个脆弱/脆弱的解决方案,它会随着HTML的变化而崩溃,或者很难管理和维护。您可以使用Nokogiri快速解析HTML并提取文本:require'nokogiri'h

  3. ruby-on-rails - Rails 编辑表单不显示嵌套项 - 2

    我得到了一个包含嵌套链接的表单。编辑时链接字段为空的问题。这是我的表格:Editingkategori{:action=>'update',:id=>@konkurrancer.id})do|f|%>'Trackingurl',:style=>'width:500;'%>'Editkonkurrence'%>|我的konkurrencer模型:has_one:link我的链接模型:classLink我的konkurrancer编辑操作:defedit@konkurrancer=Konkurrancer.find(params[:id])@konkurrancer.link_attrib

  4. ruby-on-rails - Rails 3.2.1 中 ActionMailer 中的未定义方法 'default_content_type=' - 2

    我在我的项目中添加了一个系统来重置用户密码并通过电子邮件将密码发送给他,以防他忘记密码。昨天它运行良好(当我实现它时)。当我今天尝试启动服务器时,出现以下错误。=>BootingWEBrick=>Rails3.2.1applicationstartingindevelopmentonhttp://0.0.0.0:3000=>Callwith-dtodetach=>Ctrl-CtoshutdownserverExiting/Users/vinayshenoy/.rvm/gems/ruby-1.9.3-p0/gems/actionmailer-3.2.1/lib/action_mailer

  5. ruby-on-rails - form_for 中不在模型中的自定义字段 - 2

    我想向我的Controller传递一个参数,它是一个简单的复选框,但我不知道如何在模型的form_for中引入它,这是我的观点:{:id=>'go_finance'}do|f|%>Transferirde:para:Entrada:"input",:placeholder=>"Quantofoiganho?"%>Saída:"output",:placeholder=>"Quantofoigasto?"%>Nota:我想做一个额外的复选框,但我该怎么做,模型中没有一个对象,而是一个要检查的对象,以便在Controller中创建一个ifelse,如果没有检查,请帮助我,非常感谢,谢谢

  6. ruby - 主要 :Object when running build from sublime 的未定义方法 `require_relative' - 2

    我已经从我的命令行中获得了一切,所以我可以运行rubymyfile并且它可以正常工作。但是当我尝试从sublime中运行它时,我得到了undefinedmethod`require_relative'formain:Object有人知道我的sublime设置中缺少什么吗?我正在使用OSX并安装了rvm。 最佳答案 或者,您可以只使用“require”,它应该可以正常工作。我认为“require_relative”仅适用于ruby​​1.9+ 关于ruby-主要:Objectwhenrun

  7. ruby-on-rails - Rails HTML 请求渲染 JSON - 2

    在我的Controller中,我通过以下方式在我的index方法中支持HTML和JSON:respond_todo|format|format.htmlformat.json{renderjson:@user}end在浏览器中拉起它时,它会自然地以HTML呈现。但是,当我对/user资源进行内容类型为application/json的curl调用时(因为它是索引方法),我仍然将HTML作为响应。如何获取JSON作为响应?我还需要说明什么? 最佳答案 您应该将.json附加到请求的url,提供的格式在routes.rb的路径中定义。这

  8. ruby-on-rails - 使用 Sublime Text 3 突出显示 HTML 背景语法中的 ERB? - 2

    所以我在关注Railscast,我注意到在html.erb文件中,ruby代码有一个微弱的背景高亮效果,以区别于其他代码HTML文档。我知道Ryan使用TextMate。我正在使用SublimeText3。我怎样才能达到同样的效果?谢谢! 最佳答案 为SublimeText安装ERB包。假设您安装了SublimeText包管理器*,只需点击cmd+shift+P即可获得命令菜单,然后键入installpackage并选择PackageControl:InstallPackage获取包管理器菜单。在该菜单中,键入ERB并在看到包时选择

  9. ruby - 如何在 Rails 4 中使用表单对象之前的验证回调? - 2

    我有一个服务模型/表及其注册表。在表单中,我几乎拥有服务的所有字段,但我想在验证服务对象之前自动设置其中一些值。示例:--服务Controller#创建Action:defcreate@service=Service.new@service_form=ServiceFormObject.new(@service)@service_form.validate(params[:service_form_object])and@service_form.saverespond_with(@service_form,location:admin_services_path)end在验证@ser

  10. ruby - 在 Ruby 中有条件地定义函数 - 2

    我有一些代码在几个不同的位置之一运行:作为具有调试输出的命令行工具,作为不接受任何输出的更大程序的一部分,以及在Rails环境中。有时我需要根据代码的位置对代码进行细微的更改,我意识到以下样式似乎可行:print"Testingnestedfunctionsdefined\n"CLI=trueifCLIdeftest_printprint"CommandLineVersion\n"endelsedeftest_printprint"ReleaseVersion\n"endendtest_print()这导致:TestingnestedfunctionsdefinedCommandLin

随机推荐