我正在建立一个Wordpress网络,并希望所有新站点都具有相同的永久链接结构(即“ /%year%/%monthnum%/%postname%/”)。我想知道是否可以通过功能或PHP中的钩子或黑客操作来实现,而不必依赖用户来选择该结构。
我正在建立一个Wordpress网络,并希望所有新站点都具有相同的永久链接结构(即“ /%year%/%monthnum%/%postname%/”)。我想知道是否可以通过功能或PHP中的钩子或黑客操作来实现,而不必依赖用户来选择该结构。
Answers:
您可以通过调用set_permalink_structure()
全局$wp_rewrite
对象的方法来设置永久链接结构。
add_action( 'init', function() {
global $wp_rewrite;
$wp_rewrite->set_permalink_structure( '/%year%/%monthnum%/%postname%/' );
} );
如果您遇到错误,这是PHP <5.3版本的代码。
function reset_permalinks() {
global $wp_rewrite;
$wp_rewrite->set_permalink_structure( '/%year%/%monthnum%/%postname%/' );
}
add_action( 'init', 'reset_permalinks' );
$wp_rewrite->flush_rules();
解决了问题。在init上使用它并每次运行它的错误做法。只需访问永久链接页面即可完成操作。
先前的答案不起作用。我得到了一个纯粹的解决方案。可以使用使用此代码。它将100%工作。谢谢
/**
* Rewrite set up, when theme activate i mean
*/
if (isset($_GET['activated']) && is_admin()) {
global $wp_rewrite;
$wp_rewrite->set_permalink_structure('/%postname%/');
$wp_rewrite->flush_rules();
}
/**
* Redirect to Permalink setting Page.
* Otherwise Redirect rule will not work Properly.
*/
function redirect_to_permalink() {
wp_redirect('options-permalink.php');
}
add_action( 'after_switch_theme', 'redirect_to_permalink' );
function setPermaLink(){
$ps = '/%category%/%postname%/';
$permalink_structure = sanitize_option( 'permalink_structure', $ps);
$blog_prefix = '/blog';
$prefix = '/index.php';
if ( ! empty( $permalink_structure ) ) {
$permalink_structure = preg_replace( '#/+#', '/', '/' . str_replace( '#', '', $permalink_structure ) );
if ( $prefix && $blog_prefix ) {
$permalink_structure = $prefix . preg_replace( '#^/?index\.php#', '', $permalink_structure );
} else {
$permalink_structure = $blog_prefix . $permalink_structure;
}
}
$wp_rewrite->set_permalink_structure( $permalink_structure );
flush_rewrite_rules();
}
setPermaLink();