我正在尝试为WordPress编写一个插件,但是我遇到了一些关于wp_rewrite功能的问题.
我希望通过URL传递变量使一个页面显示为多个页面(例如:www.mysite.com/WordPress?variable = helloall)
但是我想保持永久链接结构完整,所以我希望URL显示如下:
www.mysite.com/WordPress/helloall
然后,我希望能够使用slug并使用搜索我的数据库.(就像我使用$ _GET一样,如果我使用的是我先提到的一般方法)
我在网上找到了一些教程,但仍然可以使这个工作.我相信我的问题是由于您如何正确编写规则而缺乏理解.
我使用过这个教程:
http://www.prodeveloper.org/create-your-own-rewrite-rules-in-wordpress.html
我试图在大多数情况下使用相同的代码.我能够制定规则,但他们似乎不想为我工作
谁能告诉我正确的格式才能做到这一点?
这是我目前的职能
function add_rewrite_rules( $wp_rewrite )
{
$new_rules = array
(
'(.?.+?)/(.+?)/page/?([0-9]{1,})/?$' => 'index.php?pagename='.
$wp_rewrite->preg_index(1).'&varname='.
$wp_rewrite->preg_index(2).'&page='.
$wp_rewrite->preg_index(3),
'(.?.+?)/(.*?)/?$' => 'index.php?pagename='.
$wp_rewrite->preg_index(1).'&varname='.
$wp_rewrite->preg_index(2)
);
// Always add your rules to the top, to make sure your rules have priority
$wp_rewrite->rules = $new_rules + $wp_rewrite->rules;
}
Run Code Online (Sandbox Code Playgroud)
add_action('generate_rewrite_rules','add_rewrite_rules');
我已经弄明白了,我打算将此作为答案发布,但似乎我现在无法回答我自己的问题,所以相反我正在编辑原帖:
首先,我上面发布的代码是正确的,但是它不起作用的原因是因为我没有刷新规则,我使用以下代码执行此操作:
function ebi_flush_rewrite_rules()
{
global $wp_rewrite;
$wp_rewrite->flush_rules();
}
add_action( 'init', 'flush_rewrite_rules');
Run Code Online (Sandbox Code Playgroud)
我的新问题是,我的代码工作得很好,重定向所有页面而不是我想要的页面,这意味着没有显示哪个子页面有点问题,但是我已经解决了一个小问题编辑:
function add_rewrite_rules( $wp_rewrite )
{
$new_rules = array …Run Code Online (Sandbox Code Playgroud) 作为一个整体,我对 Linux 还是很陌生,我最近一直在尝试设置一个运行 PHP5.6 的小型家庭服务器,但是我一直受到问题的困扰。
最初我安装了 Linux 17.2(后来更新到 17.3)来完成这项工作,但是似乎与我的盒子有一些冲突,导致出现间歇性启动问题(它通常会停止死机并且显示器会进入省电模式,这并没有一直发生,但足以成为一个问题)...
所以我决定更新到 Linux 18 以查看问题是否仍然存在,我很高兴地说,它没有,根本没有启动问题,但是我遇到了一个新问题:(
由于 Linux Mint 8 默认在其存储库中具有 PHP7,它与我尝试运行的不兼容,所以我一直在尝试安装 PHP 5.6,我相信我已经完成了,至少它告诉我我当我在终端中检查版本时安装它。
php -v
Run Code Online (Sandbox Code Playgroud)
PHP 5.6.27-1+deb.sury.org~xenial+1 (cli) 版权所有 (c) 1997-2016 The PHP Group Zend Engine v2.6.0,版权所有 (c) 1998-2016 Zend Technologies with Zend OPcache v7.0.6 -dev,版权所有 (c) 1999-2016,由 Zend Technologies
我通过以下方式实现了这一点:
$ sudo apt-get install python-software-properties
$ sudo add-apt-repository ppa:ondrej/php
$ sudo apt-get update
$ sudo apt-get install -y php5.6 php5.6-mcrypt php5.6-gd
Run Code Online (Sandbox Code Playgroud)
http://tecadmin.net/install-laravel-framework-on-ubuntu/
但是,按照相同的演练,我无法按照描述进行安装,因为出现以下错误:
包 libapache2-mod-php5 不可用,但被另一个包引用。这可能意味着软件包丢失、已过时或只能从其他来源获得
E: 包“libapache2-mod-php5”没有安装候选
然而当我尝试安装 apache2 flat …