【问题标题】:wp_footer hook not workingwp_footer 钩子不工作
【发布时间】:2016-10-21 23:05:32
【问题描述】:

我正在制作一个插件来在每个页面的右下角添加图像。以下是运行正确并将图像添加为内容的代码。

add_filter('the_content', 'scroll_to_top_data');

但我想在我尝试过的右下角的页脚之后添加它:

add_action('wp_footer', 'scroll_to_top_data'); 

但这没有在任何地方显示图像,也没有显示错误。我正在使用 251 主题,但我当然希望这个插件可以在 wordpress 的所有主题上使用。请指导我为什么它不适用于 wp_footer 钩子,我该如何在页脚之后放置它?下面是scroll_to_top_data函数

function scroll_to_top_data($content = NULL) {
$post_id = get_the_ID();
global $wpdb;
$table = $wpdb->prefix . 'scroll';

$myrows = $wpdb->get_results("SELECT * FROM $table WHERE id = 1");
$beforeafter = $myrows[0]->beforeafter;
$where_like = $myrows[0]->where_like;
$status = $myrows[0]->status;
$image = $myrows[0]->image;
$action = $myrows[0]->action;
$color = $myrows[0]->color;
$display = $myrows[0]->display;
$except_ids = $myrows[0]->except_ids;
$url = $myrows[0]->url;
$width = $myrows[0]->width;
$position = $myrows[0]->position;
$str = $image;

if ($status != 0) {
    $scrollImage = '<img src="' . $image . '"';
    return $content . $scrollImage;
} else {
    return $content;
}
}

【问题讨论】:

  • scroll_to_top_data 函数长什么样子?
  • #Jesse 我更新了我的问题,请检查。谢谢!

标签: wordpress


【解决方案1】:

wp_footer 操作不会像过滤器那样传递任何参数或期望任何返回值(在本例中为 $content)。过滤器希望传递信息以进行修改和返回,而操作则不会。要让您的图像输出,您必须更改以下内容:

if ($status != 0) {
    $scrollImage = '<img src="' . $image . '"';
    return $content . $scrollImage;
} else {
    return $content;
}

实际回显图像:

if ($status != 0) {
    echo '<img src="' . $image . '" />'; //doesn't seem to have a closing bracket?
}

而不是试图将其附加到现有内容。

【讨论】:

    【解决方案2】:

    可能是你的 scroll_to_top_data 永远不会被调用,特别是如果你在插件的构造函数中有它。您需要将其更改为 add_action('wp_footer', array($this, 'scroll_to_top_data'));

    看看这个 SO 帖子: https://wordpress.stackexchange.com/questions/36013/remove-action-or-remove-filter-with-external-classes

    【讨论】:

      猜你喜欢
      • 2015-02-09
      • 2015-11-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-09
      • 2023-03-19
      相关资源
      最近更新 更多