请原谅noob问题,但我在php上相当新。 我正在使用插件WP Hashed ID,https://wordpress.org/plugins/wp-hashed-ids/,适用于常规帖子,但我的网站使用自定义视频帖子类型,并且该插件不适用于自定义帖子类型。该插件的开发者表示他没有计划更新插件。有谁知道如何让这个插件使用自定义帖子类型,我真的需要这个工作。非常感谢您的帮助。 我的目标是加密我的自定义视频网址,如youtube,bitly等。将post_id(1234)转换为散列id /或等效(dx49Ph)永久链接结构。
PS:我还使用自定义帖子类型永久链接插件(https://wordpress.org/plugins/custom-post-type-permalinks/)
我根据用户在其支持论坛上的建议将一些代码添加到Hashed-ID插件中,但它对我不起作用。这是编辑过的插件代码:
require_once('hashids/lib/hashids.php-5-3.php');
define ('HASHED_IDS_MIN_LENGTH', 6);
function hashed_id() {
global $wp_rewrite;
add_rewrite_tag('%hashed_id%','([^/]+)');
$permalink = $wp_rewrite->permalink_structure;
if (!empty($permalink) && false !== strpos( $permalink, '%hashed_id%' )) {
add_filter('pre_post_link', '_hashed_id_post_link', 10, 2);
add_filter('post_type_link', '_hashed_id_custom_link', 1, 2);
add_filter('parse_request', '_hashed_id_parse_request');
}
}
function _hashed_id_post_link($permalink, $post) {
$hashids = new hashids(AUTH_KEY, HASHED_IDS_MIN_LENGTH);
$permalink = str_replace('%hashed_id%', $hashids->encrypt((int)$post->ID), $permalink);
return $permalink;
}
function _hashed_id_custom_link($permalink, $post) {
$hashids = new hashids(AUTH_KEY, HASHED_IDS_MIN_LENGTH);
$permalink = str_replace('%hashed_id%', $hashids->encrypt((int)$post->ID), $permalink);
return $permalink;
}
function _hashed_id_parse_request($qv) {
$hashed_id = $qv->query_vars['hashed_id'];
if (strlen($hashed_id) > 0) {
$hashids = new hashids(AUTH_KEY, HASHED_IDS_MIN_LENGTH);
$id = $hashids->decrypt($hashed_id);
if (isset($id[0]) && is_numeric($id[0])) {
$qv->query_vars['p'] = $id[0];
} else {
$qv->query_vars['pagename'] = $hashed_id;
}
}
return $qv;
}
add_action('init', 'hashed_id');
function hashed_ids_activate_plugin() {
global $wp_rewrite;
if ($wp_rewrite->using_permalinks()) {
$wp_rewrite->set_permalink_structure(
str_replace('%post_id%', '%hashed_id%', $wp_rewrite->permalink_structure)
);
}
flush_rewrite_rules(false);
}
register_activation_hook( __FILE__, 'hashed_ids_activate_plugin' );
function hashed_ids_deactivate_plugin() {
global $wp_rewrite;
if ($wp_rewrite->using_permalinks()) {
$wp_rewrite->set_permalink_structure(
str_replace('%hashed_id%', '%post_id%', $wp_rewrite->permalink_structure)
);
}
flush_rewrite_rules(false);
}
register_deactivation_hook( __FILE__, 'hashed_ids_deactivate_plugin' );
?>
答案 0 :(得分:0)
经过一些谷歌搜索后,我才找到this article written by Francis Yaconiello。
他说:
对于您要添加到插件的每个自定义帖子类型,您需要 定义一个帖子类型。
我不确定这是一般的还是专门用于他的插件教程。这是相当先进的,所以我不确定这对你有多大用处。
这里有太多的代码要粘贴它,但请看一下。