加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 如何使用monthname创建永久链接而不是使用monthnum?

发布时间:2020-12-13 18:04:24 所属栏目:PHP教程 来源:网络整理
导读:我想重定向我的博客文章, http://www.example.com/blog/2014/september/03/post-name 但在wordpress中它只允许我使用月号, http://www.example.com/blog/2014/09/03/post-name. 我正在寻找这个,但没有找到任何有用的东西.一些未回答的帖子,他们甚至没有说,是
我想重定向我的博客文章,

http://www.example.com/blog/2014/september/03/post-name

但在wordpress中它只允许我使用月号,

http://www.example.com/blog/2014/09/03/post-name.

我正在寻找这个,但没有找到任何有用的东西.一些未回答的帖子,他们甚至没有说,是否有可能.即使在wordpress文档中也没有参考.我找到了以下代码,但它更改了网址但未链接帖子页面.

<?php
/**
* Plugin Name: Month Name
* Description: Enables the <code>%monthcode%</code> and <code>%monthname%</code> tag for Permalinks.
* Author: Roger Chen
* License: GPLv2
*/

/**
* Enables use of monthname (january,june) and monthcode (jan,jun).
* Supports permalinks in the form of /2016-nov/61742/..slug.. or /2016-november/61742/..slug..
*/
class MonthName {

/**
 * Month Names
 */
public static $monthnames = array(
    'january','february','march','april','may','june','july','august','september','october','november','december',);

/**
 * Month Codes
 */
public static $monthcodes = array(
    'jan','feb','mar','apr','jun','jul','aug','sep','oct','nov','dec',);

/**
 * Registers all required hooks
 */
public static function init() {
    add_rewrite_tag( '%monthname%','(' . implode('|',self::$monthnames) . ')' );
    add_rewrite_tag( '%monthcode%',self::$monthcodes) . ')' );
    add_rewrite_rule(
        '^([0-9]{4})-(' . implode( '|',self::$monthnames ) . ')/([0-9]+)/?','index.php?p=$matches[3]','top'
    );
    add_rewrite_rule(
        '^([0-9]{4})-(' . implode( '|',self::$monthcodes ) . ')/([0-9]+)/?','top'
    );
}
/**
 * Filters the month name and month code tags
 */
public static function filter_post_link( $permalink,$post ) {
    if ( false === strpos( $permalink,'%monthname%' ) && false === strpos( $permalink,'%monthcode%' ) ) {
        return $permalink;
    }

    try {
        $monthindex = intval(get_post_time( 'n',"GMT" == false,$post->ID ));

        $monthname = self::$monthnames[$monthindex - 1];
        $monthcode = self::$monthcodes[$monthindex - 1];

        $permalink = str_replace( '%monthname%',$monthname,$permalink );
        $permalink = str_replace( '%monthcode%',$monthcode,$permalink );

        return $permalink;
    } catch (Exception $e) {
        return $permalink;
    }
}

}

add_action( 'init',array( 'MonthName','init' ) );
add_filter( 'post_link','filter_post_link' ),10,2 );

有人请说是否可能.如果可能的话,请你说出解决这个问题的方法.

好的,这是代码.它目前支持以下格式的永久链接/ 2014 / nov / 23 / post-name或/ 2014/11月/ 23 / post-name
<?php
/**
* Plugin Name: Month Name Permalink
* Description: Enables use of <code>%monthcode%</code> or <code>%monthname%</code> tags in permalinks to generate a structure like <code>/2014/nov/23/post-name</code> or <code>/2014/november/23/post-name</code>
* Author: Anand Shah
* License: GPLv2
*/

/**
 * Based on the original code by Roger Chen (https://gist.github.com/rogerhub/8306875)
 * Plugin enables use of monthname (january,jun) in permalinks
 * Supports permalinks in the form of /2014/nov/23/post-name or /2014/november/23/post-name
*/

class Month_Name_Permalink {

/**
 * Month Names
 */
public static $monthnames = array(
    'january',self::$monthcodes) . ')' );
    add_rewrite_rule(
        '^([0-9]{4})/(' . implode( '|',self::$monthnames ) . ')/([0-9]{1,2})/(.*)?','index.php?name=$matches[4]','top'
    );
    add_rewrite_rule(
        '^([0-9]{4})/(' . implode( '|',self::$monthcodes ) . ')/([0-9]{1,'top'
    );       

}
/**
 * Filters the month name and month code tags
 */
public static function filter_post_link( $permalink,array( 'Month_Name_Permalink',2 );

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读