运行一个WordPress的简码

时间:2018-09-20 08:11:02

标签: javascript php wordpress shortcode

请不要投票...如果您需要更多详细信息,请在评论中提问... !!!

我有一个WordPress短代码。 "[something]"。如果该页面加载了此短代码,它将完美加载...但是我的问题从这里开始:-

我想基于不同的操作加载不同的短代码。 我的简码存储在一个javascript变量中,现在我想在Wordpress页面完全加载后从该变量加载此简码...

例如:单击按钮类似于输入框之类的操作...短代码每次都会不同...

注意:我知道短代码可以通过PHP函数工作,并且在加载JavaScript之前先加载PHP,但是有什么方法可以实现我的目的?

这是我的JavaScript函数

   function showjob() { 
    var intrest=document.getElementById("intrest").value; 
        jQuery.ajax({
            method: 'POST',
            url: 'jobsloader.php',
            data: {
                intrest: intrest,
                type: 'need'
            },
            success: function(data) 
            {
                // run recieved shortcode and display it in addcontainer
                document.getElementById("addcontainer").innerHTML = data;
            }
        });
    }

这是可能返回的示例短代码

 [sc_team style="horizontal" team="Karina Marie" columns="3"]

记住简码可能会因值javacript变量“ interest”而异

1 个答案:

答案 0 :(得分:0)

您将需要使用Ajax。您可以按照以下步骤操作
1.在JS事件上,调用Ajax请求
2.在请求参数中传递短代码名称,例如 SITE_URL / wp-admin / admin-ajax.php?action = handle_shortcode&short_code_name = name_of_shortcode
3.在服务器上的Ajax请求处理程序中,使用代码 do_shortcode('short_code_name')
4.在页面中显示服务器返回的内容。

在主题中,function.php文件添加以下内容

add_action( 'wp_ajax_nopriv_handle_shortcode', 'handle_shortcode' );
add_action( 'wp_ajax_handle_shortcode', 'handle_shortcode' );

function handle_shortcode( ) {
    $shortcode = $_REQUEST['shortcode_name'];
    echo do_shortcode( $shortcode );
    exit;
}

然后按如下所示修改您的js代码

function showjob() {
    var intrest=document.getElementById("intrest").value;
        jQuery.ajax({
            method: 'POST',
            url: '/wp-admin/admin-ajax.php',
            data: {
                action: 'handle_shortcode', //You can pass other parameters to be used in shortcode
                shortcode_name: intrest
            },
            success: function(data)
            {
                // run recieved shortcode and display it in addcontainer
                document.getElementById("addcontainer").innerHTML = data;
            }
        });
    }