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

2024 年 9 月 9 日

步骤 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 askey =>value) {
        if (key == 'date') {new_columns['link_url'] = __('链接地址');
        }
        new_columns[key] = value;
    }
    returnnew_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>';
        }
    }
}

// 分页导航
<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 的模板即可。

留言


mosdns

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

    积蒴一掷

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

      漫川

      回复 积蒴一掷哈哈哈哈哈 每天一个新想法