Get wp_title wp ajax

时间:2017-04-18 作者:Jonathan Hodgson

我正在尝试获取特定url的wp\\u title结果。我这样做是为了在请求页面时形成ajax响应。

我读过几篇回复(例如。Get wp_title() from page ID into a variable) 这是伟大的,除了我使用的Yoast搜索引擎优化(我相信)超越了默认功能。

不知何故,我想得到尤斯特会吐出来的头衔。

如果我在循环中,调用wp\\u title会得到所需的结果。然而,正如我所说,我是在循环之外做这件事的。我尝试了以下方法:

function requestPage() {
    $url = esc_html($_GET[\'pageChange\']);
    if($url == "/"):
        $url = get_home_url();
    endif;
    $postID = url_to_postid( $url );
    global $post;
    $post = get_post($postID);
    setup_postdata( $post );
    wp_title();
    die();
}
add_action("wp_ajax_page_change", "requestPage");
add_action("wp_ajax_nopriv_page_change", "requestPage");
提前感谢您的帮助

Edit:

我也尝试过在自定义循环中执行请求,但仍然不起作用。我就是这样尝试的:

$query = new WP_Query(array(
    \'p\'         => $postID,
    \'post_type\' => \'any\'
));
if($query->have_posts()):
    while ($query->have_posts() ): $query->the_post();
        echo "I get here";
        wp_title();
    endwhile;
endif;
我得到了回应I get here 所以我确信这个查询是有效的,但我仍然没有得到标题。

Edit 2:

在查看了wp\\u title的内部工作之后,我注意到它实际上使用了全局wp_query 变量而不是post 变量我想这很有意义,因为标题需要在存档/搜索页面以及帖子页面上工作。

出于测试目的,我在网站上查看了关于我们的页面并复制了它。在执行var\\u dumps和diff之后,如果在about us页面的head部分或在ajax函数中执行查询,我已经确认查询现在是相同的。我就是这样做的:

$query = new WP_Query(array(
    \'page\'              => \'\',
    \'pagename\'          => \'about-us\'
));
global $wp_query;
$wp_query = $query;
var_dump($wp_query);  //This is the same as a var_dump on about us page
wp_title();
我现在得到了回应» About us. 这几乎是对的,但它仍然没有得到Yoast所做的更改。使用Yoast插件,我将标题设置为测试。

我已经检查过了,Yoast插件使用了wp\\u标题挂钩,这是他们进行更改的方式。是否有任何原因导致插件钩住的函数不能在ajax环境中运行?如果是这样的话,有什么办法可以解决这个问题吗?

Yoast插件的更改正在主页上进行。在我的header.php 我有以下几点:

<title><?php wp_title();?></title>
HTML源具有以下内容:

<title>Test</title>

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

YOAST的SEO标题存储在meta\\u密钥中。试试这个-

$taxonomy = get_queried_object()->taxonomy;
$term_id = get_queried_object()->term_id;
$meta   = get_option( \'wpseo_taxonomy_meta\' );
$title  = $meta[$taxonomy][$term_id][\'wpseo_title\'];
或者这个-

$titles = get_option( \'wpseo_titles\' );

相关推荐

WordPress AJAX错误400向远程站点发送数据的错误请求

我正在使用发件人。net获取电子邮件订阅列表。这个网站给了我一些信息,可以将用户的电子邮件添加到订阅列表中。我想使用WordPress ajax来实现这一点。但它返回错误400错误请求。我的代码是:文件ajax新闻脚本。js公司: jQuery(document).ready(function($){ // Perform AJAX send news on form submit $(\'form#fnews\').on(\'submit\', funct