【问题标题】:Is it possible to change a Wordpress/woocommerce title that is written with uppercase to appear capitalized?是否可以将用大写字母书写的 Wordpress/woocommerce 标题更改为大写?
【发布时间】:2020-12-05 04:41:51
【问题描述】:

我目前正在开发一个基于 WordPress 的项目,作为一个电子商务平台,它使用 WooCommerce。我从一个产品标题用大写字母书写的旧网站进行了产品迁移。

目前我有一个产品内标题的 html 代码:

<h1 class="product_title netry-title">PRODUCT TITLE</h1>

所以我希望产品标题显示为“产品标题”。有什么办法可以做到这一点?

我看到一些使用 JS 或 JQuery 的答案,但对我不起作用。

【问题讨论】:

  • 这应该会有所帮助:stackoverflow.com/questions/20853335/…
  • 是否可以通过 PHP 使用 echo ucwords(strtolower('PRODUCT TITLE')); 之类的东西?输出:Product Title.
  • 听起来像在数据库中修复一次最有意义
  • 使用 PHP 使用 ucfirst(),或者可能使用 CSS text-transform 属性:Make the first character Uppercase in CSS... 最好的解决方案是在数据库中修复它,正如 @charlietfl 提到的那样。
  • @maniksidana 我试过了,但这只会使第一个字母大写。我想要诸如“产品标题测试”之类的东西。每个单词的第一个字母为大写字母。

标签: php css sql wordpress woocommerce


【解决方案1】:

在对此进行了一些研究并在@outis 的帮助下将我指向另一个帖子后,我得到了我想要的结果。我要问的主要是在这里“Turn all titles in wordpress powered site into "Capitalized" case

以下是该帖子的答案(来自用户 brendan):

DROP FUNCTION IF EXISTS proper;
SET GLOBAL  log_bin_trust_function_creators=TRUE;
DELIMITER |
CREATE FUNCTION proper( str VARCHAR(128) )
RETURNS VARCHAR(128)
BEGIN
  DECLARE c CHAR(1);
  DECLARE s VARCHAR(128);
  DECLARE i INT DEFAULT 1;
  DECLARE BOOL INT DEFAULT 1;
  DECLARE punct CHAR(17) DEFAULT ' ()[]{},.-_!@;:?/';
  SET s = LCASE( str );
  WHILE i < LENGTH( str ) DO 
    BEGIN
      SET c = SUBSTRING( s, i, 1 );
      IF LOCATE( c, punct ) > 0 THEN
        SET BOOL = 1;
      ELSEIF BOOL=1 THEN 
        BEGIN
          IF c >= 'a' AND c <= 'z' THEN 
            BEGIN
              SET s = CONCAT(LEFT(s,i-1),UCASE(c),SUBSTRING(s,i+1));
              SET BOOL = 0;
            END;
          ELSEIF c >= '0' AND c <= '9' THEN
            SET BOOL = 0;
          END IF;
        END;
      END IF;
      SET i = i+1;
    END;
  END WHILE;
  RETURN s;
END;
|
DELIMITER ;

由于我在服务器上的限制,我稍微调整了一下并删除了SET GLOBAL log_bin_trust_function_creators=TRUE;。 (共享主机服务器)。

之后,我只需要定位产品的标题。所以我把帖子中的默认 SQL 改成了这个

UPDATE wp_posts SET post_title = proper(post_title) WHERE `post_type` LIKE 'product';

还做了同样的product_variation 与商店中的一些 Variation 产品。

然后我不得不在 woocommerce 中重新生成数据库查找表单

(管理仪表板 -> Woocommerce -> 状态 -> 工具 -> 产品查找 表:重新生成)和一个术语计数(内部工具也是如此)。

在某些情况下,可能需要更新数据库(这也在“工具”选项卡中),但在您执行上述任何操作之前,请确保备份您的数据库。 p>

作为一般信息,产品元值也存储在wp_postmeta 表中,post_id 作为关系索引(产品 ID)。但如果上述方法均无效,请尝试使用 SQL 查询更新 wp_postmeta

正如我之前提到的,始终备份您的数据库,然后开始进行测试

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-18
    • 2020-07-24
    相关资源
    最近更新 更多