使用 WordPress 创建自定义链接分享

步骤 1:在主题文件夹下,找到 functions.php 文件,将下方代码复制粘贴进去。

function create_share_links_post_type() {
    register_post_type('share_links',
        array(
            'labels' => array(
                'name' => __('链接分享'),
                'singular_name' => __('链接'),
                'add_new' => __('添加新链接'),
                'add_new_item' => __('添加新链接'),
                'edit_item' => __('编辑链接'),
                'new_item' => __('新链接'),
                'view_item' => __('查看链接'),
                'search_items' => __('搜索链接'),
                'not_found' => __('没有找到链接'),
                'not_found_in_trash' => __('在回收站中没有找到链接')
            ),
            'public' => true,
            'has_archive' => true,
            'supports' => array('title'),
            'exclude_from_search' => true,
            'publicly_queryable' => true,
            'show_ui' => true,
            'show_in_menu' => true,
            'menu_position' => 5,
            'menu_icon' => 'dashicons-admin-links',
        )
    );
}
add_action('init', 'create_share_links_post_type');

function add_share_links_meta_boxes() {
    add_meta_box(
        'share_links_meta_box',
        '链接地址',
        'share_links_meta_box_callback',
        'share_links',
        'normal',
        'high'
    );
}
add_action('add_meta_boxes_share_links', 'add_share_links_meta_boxes');

function share_links_meta_box_callback($post) {
    wp_nonce_field('save_share_links_data', 'share_links_nonce');
    $link_url = get_post_meta($post->ID, 'link_url', true);
    ?>
    <input type="text" id="link_url" name="link_url" value="<?php echo esc_url($link_url); ?>" class="regular-text" />
    <?php
}

function save_share_links_data($post_id) {
    if (!isset($_POST['share_links_nonce']) || !wp_verify_nonce($_POST['share_links_nonce'], 'save_share_links_data')) {
        return;
    }

    if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) {
        return;
    }

    if (!current_user_can('edit_post', $post_id)) {
        return;
    }

    if (isset($_POST['link_url'])) {
        update_post_meta($post_id, 'link_url', sanitize_text_field($_POST['link_url']));
    }
}
add_action('save_post_share_links', 'save_share_links_data');

function share_links_columns($columns) {
    $new_columns = array();
    foreach ($columns as$key => $value) {
        if ($key == 'date') {
            $new_columns['link_url'] = __('链接地址');
        }
        $new_columns[$key] = $value;
    }
    return $new_columns;
}
add_filter('manage_share_links_posts_columns', 'share_links_columns');

function share_links_custom_column($column,$post_id) {
    switch ($column) {
        case 'link_url':
            $link_url = get_post_meta($post_id, 'link_url', true);
            if (!empty($link_url)) {
                echo esc_url($link_url);
            } else {
                echo __('未设置');
            }
            break;
    }
}
add_action('manage_share_links_posts_custom_column', 'share_links_custom_column', 10, 2);

步骤 2:刷新 WordPress 后台页面,在左侧菜单可看到「链接分享」。

步骤 3:在你的主题文件夹中找到(或创建)一个名为 page-templates 的子文件夹。在该文件夹中创建一个名为 share-links.php 的新文件。将下面的代码复制并粘贴到 share-links.php 文件中。

<?php /* Template Name: share_links */ ?>

<?php get_header(); ?>

<?php
// 设置每页显示的链接数量
$posts_per_page = 20;

// 设置当前页码
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;

// 创建一个查询来获取链接
$args = array(
    'post_type' => 'share_links',
    'posts_per_page' => $posts_per_page,
    'paged' => $paged,
);

// 执行查询
$share_links_query = new WP_Query($args);

if ($share_links_query->have_posts()) {
    while ($share_links_query->have_posts()) {
        $share_links_query->the_post();

        // 获取链接地址
        $link_url = get_post_meta(get_the_ID(), 'link_url', true);

        // 输出链接地址
        if (!empty($link_url)) {
            echo get_the_date();
            echo '<a href="' . esc_url($link_url) . '">' . get_the_title() . '</a><br>';
        }
    }
} // 结束while循环

// 分页导航
<div class="pagination">
    <?php
    echo paginate_links(array(
        'total' => $share_links_query->max_num_pages,
        'current' => $paged,
    ));
    ?>
</div>

<?php
} else {
    // 如果没有找到文章
    echo '<p>' . __('没有找到链接。') . '</p>';
}

// 重置查询
wp_reset_postdata();
?>

<?php get_footer(); ?>

步骤 4:在 WordPress 后台新建一个页面,引用名为 share_links 的模板即可。


发布于 2024 年 9 月 9 日

更新于 2024 年 9 月 18 日


留下评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注

评论

  1. 漫川

    不错!


    1. 积蒴一掷

      我看你站点挺完善了,每次看都有新东西,给了我点启发。


      1. 漫川

        哈哈哈哈哈 每天一个新想法


  2. mosdns

    谢谢分享~尽管不用wordpress了,但是也了解了链接的生成方式