我想用特定的自定义字段重写特定帖子的URL,以便在Google Analytics中轻松分析

时间:2021-11-09 作者:Wsbz

我们的Wordpress网站有一个名为“的自定义帖子类型”;“生活”;。

对于每个“;“生活”;post,特定自定义字段值“;“特殊”;(true | false)已设置。

我只想在自定义字段值为“0”时重写URL;“特殊”;is“是”;“正确”;这样我就可以在Google Analytics中轻松过滤那些带有special=true的帖子。

我不想更改帖子类型本身。

我也考虑过在URL中添加分类名称,但这会影响其他帖子。

我不想更改;“特殊”;值为NULL或false。

我正在考虑用钩子或其他东西更改永久链接结构,或者强制将参数附加到URL。

我想实现的URL示例(life-article 是slug名称和;“特殊”;字段为真)https://example.com/life/special/life-article/

  • https://example.com/life/life-article/?special=1https://example.com/life/life-article/

      • 这是一个永久对齐设置;“生活”;在自定义Post类型Permalinks中。enter image description here

        永久链接设置屏幕https://example.com/wp-admin/options-permalink.php


            • 帖子类型由以下插件设置:
              • Custom Post Type UI plugin
              • add_rewrite_rule
              • post_type_link%postname% 在permalink中。是否可以将其重写为URL,如/special/%postname%/?register_post_type() 作用或者是否可以覆盖中设置的值register_post_type()?

    1 个回复
    SO网友:tiago calado

    我会坚持创建urlhttps://example.com/life/life-article/?special=1

    我将创建一个php函数:

    检索所有帖子并将其存储在变量中

  • 在同一个循环内,如果它们是;“生活”;帖子,将其slug改为。。。不管怎样/?特殊=1

    这应该可以奏效。对不起,我没有帖子网站,只有产品网站,所以我没有合适的代码,但这是我的想法,这里有一个示例代码;

    function change_life_slugs(){
        $posts = some_function_that_retrieves_all_posts();
        foreach($posts as $post){
           if($post_type->type == "life"){
              wp_update_post([  // this is actually the function to update posts
                  "post_name" => "new-slug/?special=1",
                  "ID" => $post->id
              ]);
           }
        }
    }
    
    这就是我要做的,然后

    <?php change_life_slugs(); ?>
    
    例如,在首页上。php,并进入网站主页一次。之后,一旦完成,就从网站上删除代码。和全部“;“生活”;url上会有特殊的equals true。很抱歉没有真正的代码,但这是一个想法的设计,所需的功能,我相信你很容易找到它。干杯