- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
好的,我得到了这段代码,我一直用它来向我的应用程序发送新闻。它一直工作到今天。我删除了以下代码中的所有逻辑以使其更简单。但它应该“工作”有人能帮我把这段代码修复到它工作的地方,并且做得对吗?我知道是一起被黑的,不过到今天好像也没出什么问题。我没有更新任何东西,不知道交易是什么。
Plugin Name: MyPlugin Example
Version: 1.0.1
If ( ! class_exists("MyPlugin") )
{
class MyPlugin
{
var $db_version = "1.0"; //not used yet
function init()
{
//Nothing as of now.
}
function activate()
{
global $wp_rewrite;
$this->flush_rewrite_rules();
}
function pushoutput( $id )
{
$output->out =' The output worked!';
$this->output( $output );
}
function output( $output )
{
ob_start();
ob_end_clean();
header( 'Cache-Control: no-cache, must-revalidate' );
header( 'Expires: Mon, 26 Jul 1997 05:00:00 GMT' );
header( 'Content-type: application/json' );
echo json_encode( $output );
//Must encode this...
}
function flush_rewrite_rules()
{
global $wp_rewrite;
$wp_rewrite->flush_rules();
}
function createRewriteRules( $rewrite )
{
global $wp_rewrite;
$new_rules = array( 'MyPlugin/(.+)' => 'index.php?MyPlugin=' . $wp_rewrite->preg_index(1) );
if ( ! is_array($wp_rewrite->rules) )
{
$wp_rewrite->rules = array();
}
$wp_rewrite->rules = $new_rules + $wp_rewrite->rules;
return $wp_rewrite;
}
function add_query_vars( $qvars )
{
$qvars[] = 'MyPlugin';
return $qvars;
}
function template_redirect_intercept()
{
global $wp_query;
if ( $wp_query->get('MyPlugin') )
{
$id = $wp_query->query_vars['MyPlugin'];
$this->pushoutput( $id );
exit;
}
}
}
}
If ( class_exists("MyPlugin") )
{
$MyPluginCode = new MyPlugin();
}
If ( isset($MyPluginCode) )
{
register_activation_hook( __file__, array($MyPluginCode, 'activate') );
add_action( 'admin-init', array(&$MyPluginCode, 'flush_rewrite_rules') );
//add_action( 'init', array(&$MyPluginCode, 'init') );
add_action( 'generate_rewrite_rules', array(&$MyPluginCode, 'createRewriteRules') );
add_action( 'template_redirect', array(&$MyPluginCode, 'template_redirect_intercept') );
// add_filter( 'query_vars', array(&$MyPluginCode, 'add_query_vars') );
}
最佳答案
我在此过程中更改了您的一些代码,但这对我有用:
<?php
/**
* Plugin Name: MyPlugin Example
* Version: 1.0.1
**/
class MyPlugin {
function activate() {
global $wp_rewrite;
$this->flush_rewrite_rules();
}
// Took out the $wp_rewrite->rules replacement so the rewrite rules filter could handle this.
function create_rewrite_rules($rules) {
global $wp_rewrite;
$newRule = array('MyPlugin/(.+)' => 'index.php?MyPlugin='.$wp_rewrite->preg_index(1));
$newRules = $newRule + $rules;
return $newRules;
}
function add_query_vars($qvars) {
$qvars[] = 'MyPlugin';
return $qvars;
}
function flush_rewrite_rules() {
global $wp_rewrite;
$wp_rewrite->flush_rules();
}
function template_redirect_intercept() {
global $wp_query;
if ($wp_query->get('MyPlugin')) {
$this->pushoutput($wp_query->get('MyPlugin'));
exit;
}
}
function pushoutput($message) {
$this->output($message);
}
function output( $output ) {
header( 'Cache-Control: no-cache, must-revalidate' );
header( 'Expires: Mon, 26 Jul 1997 05:00:00 GMT' );
// Commented to display in browser.
// header( 'Content-type: application/json' );
echo json_encode( $output );
}
}
$MyPluginCode = new MyPlugin();
register_activation_hook( __file__, array($MyPluginCode, 'activate') );
// Using a filter instead of an action to create the rewrite rules.
// Write rules -> Add query vars -> Recalculate rewrite rules
add_filter('rewrite_rules_array', array($MyPluginCode, 'create_rewrite_rules'));
add_filter('query_vars',array($MyPluginCode, 'add_query_vars'));
// Recalculates rewrite rules during admin init to save resourcees.
// Could probably run it once as long as it isn't going to change or check the
// $wp_rewrite rules to see if it's active.
add_filter('admin_init', array($MyPluginCode, 'flush_rewrite_rules'));
add_action( 'template_redirect', array($MyPluginCode, 'template_redirect_intercept') );
我已经评论了重要的部分,但我所做的基本上是将您的 Hook 移至 use_filter
而不是 add_action
。我还将过滤器移动到它们在 Wordpress 中实际使用的顺序。似乎是当时要做的事情。
最后,确保您的永久链接设置为使用漂亮的 URL。我有一个问题,我的被设置为默认值,这使得 Wordpress 忽略任何它需要解析的重写条件。切换到一些漂亮的 URL,您的条件将刷新。
让我知道这是否适合您。希望对您有所帮助。
谢谢,乔
关于php - WordPress 插件中的 wp_rewrite,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2210826/
我只是想将其添加为已解决的问题,因为我花了一段时间才弄清楚,并且没有关于此的文档。 Notice: Trying to get property of non-object in /srv/www/w
我正在尝试为 WordPress 编写一个插件,但我遇到了一些关于 wp_rewrite 功能的问题。 我想通过 URL 传递变量(例如:www.mysite.com/WordPress?variab
好的,我得到了这段代码,我一直用它来向我的应用程序发送新闻。它一直工作到今天。我删除了以下代码中的所有逻辑以使其更简单。但它应该“工作”有人能帮我把这段代码修复到它工作的地方,并且做得对吗?我知道是一
我将我的 wordpress 永久链接设置为 /%category%/%postname% 现在我正在使用 Nextgen Gallery 所以当我在页面中有一个画廊时它会像 /cat/page?ga
如何通过 functions.php 更改永久链接设置(在子主题中更改为 twentytwelve)以使其激活并正常工作而无需手动执行任何操作? 我想这段代码应该可以工作——但它似乎没有……我想我错过
我是一名优秀的程序员,十分优秀!