为了账号安全,请及时绑定邮箱和手机立即绑定

PHP函数编辑wordpress标题标签

PHP函数编辑wordpress标题标签

PHP
茅侃侃 2023-09-08 18:22:34
由于管理员错误,我的 WordPress/woocommerce 网站上的某些产品标题标签有 .co.uk 两次 - 例如“产品名称 | ” mysite.co.uk.co.uk'。我做了一些研究,我想我需要使用 PHP 函数和过滤器str_replace来解决这个问题。这是我到目前为止所拥有的。我哪里出错了?我认为我获取标题并更改它而不是字符串替换本身是错误的。add_filter( 'wp_title', 'custom_title', 10, 2 );function custom_title( $title, $post_id ){    $post_type = get_post_field( 'post_type', $post_id, true );    if( $post_type == 'product' || $post_type == 'product_variation' ){        $title = get_the_title( $post_id );        $title = str_replace(" .co.uk", '', $title);    }    return $title;}提前致谢
查看完整描述

1 回答

?
慕的地10843

TA贡献1785条经验 获得超8个赞

我认为您的问题可能是$post_id没有正确定义或没有传递给回调。另请注意,wp_title自 WordPress 4.4 起已弃用,并且不适用于 5.4。

无论如何,WordPress 有一个get_post_type()函数,可以简化事情。大多数 WordPress 功能不需要帖子 ID,它们将默认为全局$post对象。

add_filter('pre_get_document_title', function($title) {

    $postType = get_post_type();

    if( $postType === 'product' || $postType === 'product_variation') {

        $title = str_replace(' .co.uk', '', get_the_title());

    }

    return $title;

}, 99);

正如您在下面所说的,帖子标题已手动更新,并.co.uk在 Yoast SEO 片段标题中添加了附加内容。


假设您有权访问数据库,纠正此问题的最佳方法是更新标题,完全消除问题,而不是尝试对其进行修复。


Yoast 将其标题存储在postmetaWordPress 数据库的表中,键为_yoast_wpseo_title。要替换.co.uk这些标题中的所有添加内容,您可以运行如下查询:


UPDATE `database_name`.`postmeta`

SET meta_value = REPLACE(meta_value, ' .co.uk', '')

WHERE meta_key = '_yoast_wpseo_title'

确保更改上面的查询,以便这database_name是 WP 数据库的正确名称,如果数据库表名称有前缀,也请设置正确的表名称postmeta。


查看完整回答
反对 回复 2023-09-08
  • 1 回答
  • 0 关注
  • 82 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信