46 lines
1.8 KiB
PHP
46 lines
1.8 KiB
PHP
<?php
|
|
// 注册短代码
|
|
add_shortcode('friend_links', 'flm_display_friend_links');
|
|
function flm_display_friend_links($atts) {
|
|
global $wpdb;
|
|
$table_name = $wpdb->prefix . 'friend_links';
|
|
|
|
// 完全使用后台设置,忽略用户传递的参数
|
|
$random_display = get_option('flm_random_display', 1);
|
|
$desktop_columns = get_option('flm_desktop_columns', 3);
|
|
$show_descriptions = get_option('flm_show_descriptions', 1);
|
|
|
|
$order_by = $random_display ? 'RAND()' : 'sort_order ASC';
|
|
$links = $wpdb->get_results("SELECT * FROM $table_name ORDER BY $order_by");
|
|
|
|
if (empty($links)) {
|
|
return '';
|
|
}
|
|
|
|
ob_start();
|
|
?>
|
|
<div class="flm-links-container" data-columns="<?php echo $desktop_columns; ?>">
|
|
<?php foreach ($links as $link): ?>
|
|
<div class="flm-link-card">
|
|
<a href="<?php echo esc_url($link->url); ?>" target="_blank" rel="noopener noreferrer">
|
|
<div class="flm-link-icon-container">
|
|
<img src="<?php echo $link->icon ?: FLM_PLUGIN_URL . 'assets/images/default-icon.png'; ?>"
|
|
alt="<?php echo esc_attr($link->name); ?>"
|
|
class="flm-link-icon">
|
|
</div>
|
|
<div class="flm-link-name"><?php echo esc_html($link->name); ?></div>
|
|
<?php if ($show_descriptions && !empty($link->description)): ?>
|
|
<div class="flm-link-description"><?php echo esc_html($link->description); ?></div>
|
|
<?php endif; ?>
|
|
</a>
|
|
</div>
|
|
<?php endforeach; ?>
|
|
</div>
|
|
<style>
|
|
.flm-links-container {
|
|
grid-template-columns: repeat(<?php echo $desktop_columns; ?>, 1fr) !important;
|
|
}
|
|
</style>
|
|
<?php
|
|
return ob_get_clean();
|
|
}
|