我将把它转换为一个函数来解释所有条件。采取以下措施:
function generate_facebook_sharer_link( $label = \'Share this on Facebook\', $classes = \'\', $return = false ){
if( is_singular() ){
// If is a Single CPT, Post, Page, etc.
$url = get_permalink();
$title = get_the_title();
} else if( is_front_page() ){
// If this is the "Main Page"
$url = home_url();
$title = get_bloginfo( \'title\' );
} else {
// All other Accounts (Archives, Blog Page, etc.)
$url = ( is_ssl() ? \'https://\' : \'http://\') . $_SERVER[\'HTTP_HOST\'] . $_SERVER[\'REQUEST_URI\'];
$title = get_bloginfo( \'title\' );
}
$output = sprintf( \'<a class="%s" href="http://www.facebook.com/sharer.php?u=%s&t=%s" target="_blank" rel="noopener noreferrer">%s</a>\', $classes, urlencode( $url ), urlencode( $title ), $label );
// Allow returning, default to echoing
if( $return == true )
return $output;
echo $output;
}
这将在任何位置输出链接
generate_facebook_sharer_link();
被调用。这个
is_singular()
应捕获所有自定义帖子类型、帖子、页面等。
is_front_page()
将捕获是否为“主页”,无论阅读设置/博客页面是什么,然后返回到使用适当的协议构建当前URI并设置博客标题。
这也可以非常简单地转化为一个短代码:
add_shortcode( \'facebook_share_link\', function( $atts ){
// Extract and Define Defaults
extract( shortcode_atts( array(
\'label\' => \'Share this on Facebook\',
\'classes\' => \'\',
), $atts ) );
if( is_singular() ){
// If is a Single CPT, Post, Page, etc.
$url = get_permalink();
$title = get_the_title();
} else if( is_front_page() ){
// If this is the "Main Page"
$url = home_url();
$title = get_bloginfo( \'title\' );
} else {
// All other Accounts (Archives, Blog Page, etc.)
$url = ( is_ssl() ? \'https://\' : \'http://\') . $_SERVER[\'HTTP_HOST\'] . $_SERVER[\'REQUEST_URI\'];
$title = get_bloginfo( \'title\' );
}
$output = sprintf( \'<a class="%s" href="http://www.facebook.com/sharer.php?u=%s&t=%s" target="_blank" rel="noopener noreferrer">%s</a>\', $classes, urlencode( $url ), urlencode( $title ), $label );
return $output;
} );
这会让你扑通一声
[facebook_share_link]
无论你想让它出现在哪里。