【问题标题】:Wordpress rewrite rules on every postWordPress 在每个帖子上重写规则
【发布时间】:2022-12-12 02:42:06
【问题描述】:

我有一个关于下载应用程序的网站,当访问者点击下载按钮时

示例:https://deskrush.com/camp-pinewood-2-apk/

参观者将前往 https://deskrush.com/camp-pinewood-2-apk/?target=download&index=0

我希望链接是 https://deskrush.com/camp-pinewood-2-apk/download/0

但我想对所有帖子都这样做

任何人都可以做这个工作吗?

 function simple_blog_add_rewrite_rule()
{
    $args = [
        'numberposts' => -1,
        'post_type' => 'post',
        'meta_key'   => '_wp_page_template',
        'meta_value' => 'single-apk.php'
    ];
    $posts = get_posts($args);
    if ($posts) {

        foreach ($posts as $post) {
            add_rewrite_rule(
                $post->post_name . '/([^/]+)/?$',
                'index.php?name=' . $post->post_name . '&target=$matches[1]',
                'top'
            );
            add_rewrite_rule(
                $post->post_name . '/download/([^/]+)/?$',
                'index.php?name=' . $post->post_name . '&target=download&index=$matches[1]',
                'top'
            );
        }
    }
}
add_action('init', 'simple_blog_add_rewrite_rule');

function simple_blog_add_query_vars_filter($vars)
{
    $vars[] = "target";
    $vars[] = "index";
    return $vars;
}
add_filter('query_vars', 'simple_blog_add_query_vars_filter');

问题是我在发布新帖子时需要刷新重写规则,有什么解决办法吗?

【问题讨论】:

  • 请添加一些代码。你试过什么了?您在哪里定义重定向?请附上您的.htaccessnginx.conf文件

标签: wordpress custom-wordpress-pages wordpress-rest-api


【解决方案1】:

在你的 functions.php

这处理重定向。

function custom_add_rewrite_rule(){
    
   
    $posts = get_posts( array( 'numberposts' => -1, 'post_type' => 'post') );
  
    if( $posts ){
        
        foreach($posts as $post ){
            
            add_rewrite_rule( 
                $post->post_name . '/download/([^/]+)/?$', 
                'index.php?name=' . $post->post_name . '&target=download&index=$matches[1]', 
                'top' 
            );   
        }
    }
}
add_action('init', 'custom_add_rewrite_rule');

然后添加自定义query_vars

function add_query_vars_filter( $vars ){
    $vars[] = "target";
    $vars[] = "index";
    return $vars;
}
add_filter( 'query_vars', 'add_query_vars_filter' );

现在在您的模板中,您可以通过访问查询来回调它:

get_query_var('target');
get_query_var('index');

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-11-21
  • 2023-03-27
  • 1970-01-01
  • 2012-03-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多