반응형
monthnum 대신 monthname을 사용하여 permalink를 작성하는 방법
제 블로그 기사를 이렇게 수정하고 싶은데
http://www.example.com/blog/2014/september/03/post-name
하지만 워드프레스에서는 월 번호만 사용할 수 있습니다.
http://www.example.com/blog/2014/09/03/post-name 를 참조해 주세요.
이걸 찾고 있는데 쓸만한 게 없네요.답변이 없는 게시물들이 있는데, 그들은 그것이 가능한지 아닌지조차 말하지 않고 있다.워드프레스 문서에도 이에 대한 참조는 없습니다.아래 코드를 찾았는데 URL은 바뀌지만 게시 페이지 링크는 되지 않습니다.
<?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',
'may',
'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%', '(' . implode('|', 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]+)/?',
'index.php?p=$matches[3]',
'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', array( 'MonthName', 'filter_post_link' ), 10, 2 );
그게 가능한지 아닌지 누가 좀 말해주세요.가능하다면, 이 문제를 해결할 방법을 가르쳐 주세요.
좋아, 여기 암호가 있어.현재 다음 형식의 퍼멀링크를 지원합니다./2014/nov/23/post-name
또는/2014/november/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, june) and monthcode (jan, 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',
'february',
'march',
'april',
'may',
'june',
'july',
'august',
'september',
'october',
'november',
'december',
);
/**
* Month Codes
*/
public static $monthcodes = array(
'jan',
'feb',
'mar',
'apr',
'may',
'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%', '(' . implode('|', 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,2})/(.*)?',
'index.php?name=$matches[4]',
'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( 'Month_Name_Permalink', 'init' ) );
add_filter( 'post_link', array( 'Month_Name_Permalink', 'filter_post_link' ), 10, 2 );
언급URL : https://stackoverflow.com/questions/27033053/how-to-create-permalink-with-monthname-instead-of-using-monthnum
반응형
'programing' 카테고리의 다른 글
this.refs.something이 "syslog"를 반환합니다. (0) | 2023.03.07 |
---|---|
스프링 부트 테스트에서 TestRestTemplate 및 MockMvc를 삽입할 수 없습니다. (0) | 2023.03.07 |
부트스트랩 선택 옵션 드롭다운 아래쪽 화살표가 표시되지 않음 (0) | 2023.03.07 |
WP 루프 외부에서 게시물 작성자 ID를 가져옵니다. (0) | 2023.03.07 |
wp-cli: MAMP에서 phpunit을 실행할 수 없습니다. (0) | 2023.03.07 |