编辑自定义帖子类型的固定链接结构还是修改.htaccess?

时间:2014-10-28 作者:Cody Hendrix

几天来,我一直在努力寻找解决方案,我完全被难住了。

我正在建立一个网站来列出我要出售的域名组合,我正在使用我购买的插件来列出这些域名。插件的作者不在任何地方,我对PHP只有基本的了解。

该插件将每个域名列为一个单独的帖子,但它使用了一个自定义的帖子类型,该类型将帖子页面的url显示为optibrands.com/?mdlp_my_domain_list=znvr-com 哪里znvr.com 是出售的域名和帖子的标题。

我要做的是通过删除/?mdlp_my_domain_list= 并将其显示为optibrands.com/znvr-comoptibrands.com/domain/znvr-com 如果前者不可能。

我试着用多种不同的方式重写htaccess,但都没有成功。我最接近的是添加:

`RewriteEngine OnRewriteCond%{\\u请求}\\/+(index.php)?\\?mdlp\\u my\\u domain\\u列表=([^&;\\]+)重写规则^/%2?[左,右]

重写条件%{REQUEST\\u FILENAME}-FreWriteSecond%{REQUEST\\u FILENAME}-dRewriteRule ^([^/]+)$/?mdlp\\u my\\u domain\\u list=$1[升,QSA]`

这会按照我的意愿重写URL,但会产生重定向循环错误。

我也尝试过调整插件的PHP函数,但我不太确定我是否知道需要编辑什么。

以下是我认为需要重写的代码片段:

public function filterRewriteRules( $wp_rewrite ) {

                        $base = trailingslashit( $this->rewriteSlug );
                        $baseSingle = trailingslashit( $this->rewriteSlugSingular );
                        $baseTax = trailingslashit( $this->taxRewriteSlug );
                        $baseTax = "(.*)" . $baseTax;

                        $newRules[$base . \'page/(\\d+)\'] = \'index.php?post_type=\' . self::POSTTYPE;
                        $newRules[$baseTax . \'([^/]+)/?$\'] = \'index.php?post_type= \' . self::POSTTYPE;

                        $wp_rewrite->rules = $newRules + $wp_rewrite->rules;
和/或

public function initialize() {
                                $this->pluginName = __( \'My Domain List\', $this->pluginDomain );       
                                $this->rewriteSlugSingular = \'my-domain-list-pro-single\';      
                                $this->rewriteSlug =    \'mdlp_my_domain_list\';                         
                                $this->taxRewriteSlug = $this->rewriteSlug . \'/\' . __( \'mdlp_categories\', $this->pluginDomain );
和/或

public function create_post_type() {
                    $this->get_post_type_labels();
                    register_post_type(self::POSTTYPE, $this->postTypeArgs);                       
                    register_taxonomy( self::TAXONOMY, self::POSTTYPE, array(
                            \'hierarchical\' => true,
                            \'update_count_callback\' => \'\',
                            \'query_var\'=>true,
                            \'rewrite\' => false,
                            //\'rewrite\' => array(\'slug\'=> $this->taxRewriteSlug),
                            \'public\' => true,
                            \'show_ui\' => true,
                            \'has_archive\' => true,
                            \'labels\' => $this->taxonomyLabels
编辑:Here is the entire contents of the PHP file

如果有人知道我能做些什么来解决这个问题,我将永远感激,因为我几乎放弃了希望!

1 个回复
SO网友:Courtney Ivey

根据插件代码的粘贴位置,问题似乎在于自定义帖子类型的注册。问题在第25行。“重写”应设置为true。

<?php
                private $postTypeArgs = array(
                    \'public\' => true,  
                    \'rewrite\'=> false,                
                    \'singular_label\' => \'mydomainlist\',
                    \'publicly_queryable\' => true,
                    \'show_ui\' => true,
                    \'show_in_menu\' => true,
                    \'query_var\' => true,                   
                    \'capability_type\' => \'post\',
                    \'has_archive\' => true,
                    \'hierarchical\' => false,
                    \'menu_position\' => 5,      
                    \'supports\' => array(\'title\',\'editor\',\'author\',\'thumbnail\',\'excerpt\',\'comments\', \'custom-fields\', \'revisions\')
                );    
您应该使用:\'rewrite\'=> true

结束

相关推荐

包含帖子类型和分类的.htaccess重写规则

我正在尝试重写此url www.domain。com/图库/?大学=伯明翰,以便于搜索引擎优化,如www.domain。com/uni/伯明翰/画廊(?university=birmingham)代表分类法,图库是post类型。目前这个url(www.domain.com/gallery/?university=birmingham)运行良好,它显示了正确的帖子,只是没有成功地将其改写为上面的帖子我尝试过这样做(应该可以):RewriteEngine On RewriteRule ^uni/([0