Admin-ajax.php获取定制帖子标题

时间:2015-12-07 作者:Pablo Levin

我无法获取自定义帖子的标题。

这就是我正在做的:

//IN functions.php

function fluid_scripts() {
    wp_enqueue_script(\'lateral-fluid\', get_template_directory_uri().\'/js/lateral-fluid.js\', array(\'jquery\'));
    wp_localize_script( \'lateral-fluid\', \'ajaxFluid\', array( \'ajaxurl\' => admin_url( \'admin-ajax.php\' )));
}

add_action(\'init\', \'create_post_type\');
function create_post_type(){
    resgister_post_type ( \'portfolio\',
            array (
                \'labels\' => array(
                \'name\' => __(\'beds\'),
                \'singular_name\' => __(\'bed\')
            ),
            \'public\' => true,
            \'has_archive\' => true,
            )
    );
}

add_action( \'wp_ajax_nopriv_lateral_fluid\', \'my_lateral_fluid\' );
add_action( \'wp_ajax_lateral_fluid\', \'my_lateral_fluid\' );

function my_lateral_fluid() {
    //echo "test";
    $args = array(   
            "post_type" => "portfolio",
            "posts_per_page" => -1  
    );  
    $portfolio_query = new WP_Query($args);                 

    while($portfolio_query->have_post() ){
        $portfolio_query->the_post();
        echo "<li>" . get_the_title() . "</li>";       
    }
    wp_die();
}
我签入我的管理ajax。带有我的操作的php url:http://localhost/wordpress/wp-admin/admin-ajax.php?action=lateral_fluid, 它没有显示任何内容。如果我取消注释//echo“test”;it显示测试。我已经添加了5个带有标题的自定义帖子。

为什么我没有得到我自定义帖子(公文包)的标题。我错过了什么?

提前感谢

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

First 替换:

resgister_post_type 
使用:

register_post_type 
来修正打字错误。

Secondly 替换:

while( $portfolio_query->have_post() ){
使用

while( $portfolio_query->have_posts() ){
你忘了复数s.

请注意调用不存在的方法的原因,如:

$portfolio_query->some_non_existent_method()
不会引发PHP错误,这是魔法__call 的方法WP_Query 类别:

/**
 * Make private/protected methods readable for backwards compatibility.
 *
 * @since 4.0.0
 * @access public
 *
 * @param callable $name      Method to call.
 * @param array    $arguments Arguments to pass when calling.
 * @return mixed|false Return value of the callback, false otherwise.
 */
public function __call( $name, $arguments ) {
    if ( in_array( $name, $this->compat_methods ) ) {
            return call_user_func_array( array( $this, $name ), $arguments );
    }
    return false;
}
如果没有它,我们将得到预期的:

致命错误:调用未定义的方法WP_Query::some_non_existent_method()

所以输入错误WP_Query 方法名称可能很难检测。

我想最好是throw an exception 而不是返回false 对于不兼容的方法:

throw new Exception(
    sprintf(
        __( \'Call to undefined method WP_Query::%s\' ),
        sanitize_key( $name )
    )
);

相关推荐

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