页面上未显示已定义的函数

时间:2019-03-07 作者:Ivanov

我在函数中定义了一个函数。php,然后我尝试调用它,但调用时它不可见。

这是函数

function social_sharing_buttons($content) {
    global $post;
    if(!is_page()){

        // Get current page URL 
        $URL = urlencode(get_permalink());

        // Get current page title
        $Title = htmlspecialchars(urlencode(html_entity_decode(get_the_title(), ENT_COMPAT, \'UTF-8\')), ENT_COMPAT, \'UTF-8\');

        $facebookURL = \'https://www.facebook.com/sharer/sharer.php?u=\'.$URL;

        $variable .= \'<div class="social">\';;
        $variable .= \'<a class="link facebook" href="\'.$facebookURL.\'" target="_blank">Facebook</a>\';
        $variable .= \'</div>\';

        return $variable.$content;
    }else{
        return $variable.$content;
    }
};
add_filter( \'the_content\', \'social_sharing_buttons\');
该功能只需在单个帖子页面上添加一个facebook共享按钮。

我试着打单曲。php如下所示:

echo \'<div class="post_cont_info entry-meta">\'; 

    social_sharing_buttons(\'post\');

echo \'</div>\';

1 个回复
最合适的回答,由SO网友:Jacob Peattie 整理而成

函数的编写方式与您尝试使用它的方式之间没有关系。

第一个问题是,您的函数返回一个值,而不是回显它。因此,如果您想输出需要使用的值echo:

echo social_sharing_buttons(\'post\');
但是\'post\' 在这里没有意义。您的代码将只输出以下内容:

<div class="post_cont_info entry-meta">
    <div class="social">
        <a class="link facebook" href="(etc. etc.)" target="_blank">Facebook</a>
    </div>
    post
</div>
请注意post 最后在那里闲逛。

这是因为social_sharing_buttons() 函数写入过滤器the_content() 这样您的自定义链接就会显示在帖子内容的顶部。这意味着它接受帖子的全部内容作为论据&mdash;不是职位类型&mdash;然后将值返回给WordPress,由the_content() 作用因此,您不能使用它在任意模板中输出共享链接。

如果要编写函数,使其仅输出此链接,则需要将其重写为如下所示:

function social_sharing_buttons( $after = \'\' ) {
    $variable = \'\';

    if ( ! is_page() ) {
        $url = urlencode( get_permalink() );

        $facebookURL = \'https://www.facebook.com/sharer/sharer.php?u=\' . $url;

        $variable .= \'<div class="social">\';;
        $variable .= \'<a class="link facebook" href="\'.$facebookURL.\'" target="_blank">Facebook</a>\';
        $variable .= \'</div>\';
    }

    return $variable . $after;
}
请注意以下更改:

$content 参数已被重命名为泛型,即使它未用作过滤器,也有意义,并已被赋予默认值,以便您可以在不传递参数的情况下回显它

  • global $post 已被删除,因为它没有任何用途
  • $Title 已删除,因为共享者。php不支持URL以外的任何其他参数,因此它没有任何用途
  • $variable 已删除,以避免在else 条件
  • 现在可以这样输出:

    echo social_sharing_buttons();
    
    但它也可以作为the_content():

    add_filter( \'the_content\', \'social_sharing_buttons\' );
    

    相关推荐

    Query posts by Post title

    我使用下面的ACF查询生成一个列表,效果很好。然而,现在我想按标准WP“post title”而不是ACF自定义字段“datum”对列表进行排序我该怎么做?// args $args = array( \'posts_per_page\' => 999, \'post_type\' => \'lezing\', \'orderby\' => \'meta_value\', \'order\' => \'ASC\',