主页上的固定链接与共享链接的帖子(_P)

时间:2015-03-29 作者:Alex_TJ

我没有用插件来衡量网站,而是硬编码了几个共享链接。

我在侧边栏中使用了\\u permalink来创建链接,这些链接在帖子和页面上都可以使用,但在主页上,它显示的是最后一篇帖子的链接,而不是主页。

我使用的代码非常基本:

<a href="http://www.facebook.com/sharer.php?u=<?php the_permalink();?>&amp;t=<?php the_title(); ?>" target="_blank">Share this on Facebook</a>
如何获得主页共享链接以使用主页url,同时还可以处理帖子和页面?

2 个回复
SO网友:websupporter

此代码显示takesget_permalink() 在单个页面上,并且get_home_url() 在主页上。如果找到链接,将显示共享链接。

例如,该链接现在不会显示在类别页面上。

<?php
    if( is_home() ){
        $link = urlencode( get_home_url() );
        $title = urlencode( get_bloginfo( \'title\' ) );
    }elseif( is_single() || is_page() ){
        $link = urlencode( get_permalink() );
        $title = urlencode( get_the_title() );
    }

    if( isset( $link ) ):
?>
<a href="http://www.facebook.com/sharer.php?u=<?php 
    echo $link;?>&amp;t=<?php echo $title; 
?>" target="_blank">Share this on Facebook</a>
<?php
    endif;
?>
信息:

get\\u home\\u url():https://codex.wordpress.org/Function_Reference/get_home_url

  • is\\u home():https://codex.wordpress.org/Function_Reference/is_home
  • is\\u single():https://codex.wordpress.org/Function_Reference/is_single
  • SO网友:Xhynk

    我将把它转换为一个函数来解释所有条件。采取以下措施:

    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] 无论你想让它出现在哪里。

    结束

    相关推荐

    Custom fields in Permalinks?

    我想知道如何将自定义字段值添加到自定义帖子类型的永久链接中?例如,我有自定义的post文件ex:cpt cities。php,它处理注册自定义帖子类型和所有这些细节。在该文件中,我试图将其永久链接设置为包含一个“cities”自定义字段值。我可以使用add\\u permastruct设置永久链接。但是,我无法获取自定义字段的值,并且get\\u post\\u meta()不起作用。这可能是由于$post->ID不起作用(因为它位于自定义post类型文件中,而不是post循环)。有人知道这样一种在