我正在查看我的代码3个小时,但没有得到。我希望你能帮助我。
我有一个Wordpress博客,其中安装了“自定义帖子类型”和“高级自定义字段”。它的工作相当不错。我在自定义字段上使用了基本的过滤器功能,如下所述:http : //www.advancedcustomfields.com/resources/creating-wp-archive-custom-field-filter/
为了过滤自定义字段,我使用URL的get-parameters。因此,URL的格式如下:
www.domain.tld /?post_type = movie&land = usa&typ = love&actor = kidman
现在,我想要一个漂亮的URL形式:
www.domain.tld / movie / usa / love / kidman
而更麻烦的是,我无法正确使用.htaccess :(
我的代码是:
AddHandler php56-cgi .php
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^movie/(.*)/(.*)/(.*)$ /?post_type=movie&land=$1&typ=$2&actor=$3 [L]
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
没用 结果是404。我相信这是我没有得到的“ wordpress-thing”。
如果我将代码更改为:
RewriteRule ^movie/(.*)/(.*)/(.*)$ http://www.domain.tld/?post_type=movie&land=$1&typ=$2&actor=$3 [L]
它用作普通重定向。
如果我将其更改为
RewriteRule ^movie/(.*)/(.*)/(.*)$ file.php/?post_type=movie&land=$1&typ=$2&actor=$3 [L]
其中file.php是非wordpress文件,它也可以正常工作(它显示了file.php的内容)
看来我无法“调用”诸如index.php之类的特定于wordpress的文件。
希望您能对我有所帮助,并感谢您通读我的非母语英语;)
来自德国多米尼克的问候
我自己解决了问题:)
与往常一样,如果知道从哪里看,解决方案就非常简单。
我深入研究了一下:http : //codex.wordpress.org/Rewrite_API/add_rewrite_rule和http://codex.wordpress.org/Rewrite_API/add_rewrite_tag最终硬币掉了。
首先,我删除了我在.htaccess中创建的每个自定义代码,导致该代码不是解决我的问题的位置。
我在我的functions.php中添加了以下内容
function custom_rewrite_basic() {
add_rewrite_rule('^movie/(.*)/(.*)/(.*)?', 'index.php?post_type=movie&land=$matches[1]&typ=$matches[2]&actor=$matches[3]', 'top');
}
add_action('init', 'custom_rewrite_basic');
function custom_rewrite_tag() {
add_rewrite_tag('%land%', '([^&]+)');
add_rewrite_tag('%typ%', '([^&]+)');
add_rewrite_tag('%actor%', '([^&]+)');
}
add_action('init', 'custom_rewrite_tag', 10, 0);
编辑function.php后,请不要忘记将永久链接保存在您的wordpress设置中。
现在,我可以访问模板中的“ query_vars” :
$wp_query->query_vars['land']
或functions.php:
$query->query_vars[ land ]
它完美的工作:)
无论如何,谢谢你,祝你周末愉快Dominik
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句