如何使插件[WP-Hashed-ID]与自定义帖子类型一起使用?

时间:2014-05-31 03:41:40

标签: php wordpress plugins hash permalinks

请原谅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' );


?>

1 个答案:

答案 0 :(得分:0)

经过一些谷歌搜索后,我才找到this article written by Francis Yaconiello

他说:

  

对于您要添加到插件的每个自​​定义帖子类型,您需要   定义一个帖子类型。

我不确定这是一般的还是专门用于他的插件教程。这是相当先进的,所以我不确定这对你有多大用处。

这里有太多的代码要粘贴它,但请看一下。