从包含短代码的页面获取页面ID

时间:2017-11-09 11:11:25

标签: php wordpress

如何从包含短代码的页面获取页面ID。 我尝试了这个但是无法用我试过的不同方法来获得它。

这是代码

function pro_availabiltyid() {
    global $pro_templateid;

    $pro_wp_query= new WP_Query(
        array(
            'post_type' => 'page',
        )
    );
    if ( $pro_wp_query->have_posts() ) {
        while ( $pro_wp_query->have_posts() ) {
            $pro_wp_query->the_post();
            $post_content = get_the_content();
            if ( has_shortcode( $post_content, 'availability' ) ) {
                $pro_templateid = get_the_ID();
            }
        }
        wp_reset_postdata();
    }
}
add_action( 'init', 'pro_availabiltyid' );

var_dump( $pro_templateid );

网页内容

Lorem Ipsum
[availability]

我做错了什么?

1 个答案:

答案 0 :(得分:0)

尝试get_shortcode_regex

在活动主题文件夹

中的functions.php中添加代码
function detect_my_shortcode()
{
    global $post,$pro_templateid;
    $pattern = get_shortcode_regex();

    if (   preg_match_all( '/'. $pattern .'/s', $post->post_content, $matches )
        && array_key_exists( 2, $matches )
        && in_array( 'availability', $matches[2] ) )  //YOUR SHORTCODE
    {
        // shortcode is being used
        $pro_templateid = $post->ID;
    }
}
add_action( 'wp', 'detect_my_shortcode' );