需要在当前使用主题的目录下,通常在wordpres所在目录的/wp-content/theme/中寻找,修改functions.php文件,在底部添加如下代码:
function display_remote_url_content_shortcode( $atts ) {
$atts = shortcode_atts( array(
'url' => '', // 默认URL为空
), $atts, 'remote_content' );
$input_url = trim( $atts['url'] ); // 获取原始URL输入并去除空格
if ( empty( $input_url ) ) {
return '请提供一个有效的URL。';
}
// 判断是否为相对地址
// 简单的判断逻辑:如果URL不包含 "://" (协议) 且不以 "/" 开头 (网站根目录的绝对路径)
// 那么我们认为它是一个相对路径,需要拼接
if ( strpos( $input_url, '://' ) === false && substr( $input_url, 0, 1 ) !== '/' ) {
// 构建完整的URL:网站主页URL + 相对路径
// 注意:这里假设相对路径是相对于当前主题或网站根目录。
// 如果你的相对路径是相对于短代码所在的页面的,则需要更复杂的逻辑。
// 对于大多数情况,site_url() + 相对路径是合理的。
$full_url = site_url( '/' . $input_url );
} else {
// 如果是完整URL或以斜杠开头的绝对路径,则直接使用
$full_url = $input_url;
}
// 清理并验证最终的URL
$url = esc_url_raw( $full_url );
// 再次检查URL是否为空或无效
if ( empty( $url ) ) {
return '提供的URL无效。';
}
// 使用 wp_remote_get 获取内容
$response = wp_remote_get( $url );
if ( is_wp_error( $response ) ) {
$error_message = $response->get_error_message();
return "获取远程内容时发生错误: $error_message";
}
$body = wp_remote_retrieve_body( $response );
return wp_kses_post( $body ); // 清理HTML内容以防止XSS攻击
}
// 添加短代码标识remote_content并与display_remote_url_content_shortcode方法关联
add_shortcode( 'remote_content', 'display_remote_url_content_shortcode' );
然后在模版编辑中,使用[短代码标识 url=”链接地址”]短代码来完成相应的设置。
链接支持绝对路径和相对路径。
