您可以创建一个自定义短代码包装器,该包装器将使用所需的属性执行短代码,因此您可以使用[jobs-custom] 在页面中:
add_shortcode(\'jobs-custom\', \'custom_jobs_shortcode\');
function custom_jobs_shortcode($atts) {
    if (is_user_logged_in()) {
         $per_page = get_user_meta(get_current_user_id(), \'jobs-per-page\', true);
    }
    if (!isset($per_page) || !$per_page) {
       if (isset($_COOKIE[\'jobs-per-page\'])) {$per_page = $_COOKIE[\'jobs-per-page\'];}
       else {$per_page = 10;}
    }
    return do_shortcode(\'[jobs per_page="\'.$per_page.\'"]\');
}
 然后添加一个早期操作以检查querystring值并设置用户元/cookie。。。
add_action(\'init\', \'custom_set_jobs_per_page\');
function custom_set_jobs_per_page() {
    if (isset($_REQUEST[\'jobs-per-page\'])) {
        $per_page = absint($_REQUEST[\'jobs-per-page\']);
        if ($per_page > 10) {
            if (is_user_logged_in()) {update_user_meta(get_current_user_id(), \'jobs-per-page\', $per_page);}
            else {setcookie(\'jobs-per-page\', $per_page, (time()+(7*24*60*60);}
        }
    }
}
 有了它,您可以添加javascript
onchange 功能到您的
<select> 输入:
<script>function change_jobs_per_page() {
    el = document.getElementById(\'jobs-per-page-select\');
    perpage = el.options[el.selectedIndex].value;
    href = window.location.href;
    if (href.indexOf(\'jobs-per-page=\') > -1) {
        href = href.split(\'jobs-per-page=\');
        window.location.href = href[0]+\'jobs-per-page=\'+perpage;
    } else if (href.indexOf(\'?\') > -1) {
        window.location.href = href+\'&jobs-per-page=\'+perpage;
    } else {
        window.location.href = href+\'?jobs-per-page=\'+perpage;
    }
}</script>
<select id=\'jobs-per-page-select\' onchange=\'change_jobs_per_page();\'>
 这种方法的优点是,新的每页值是持久的,直到用户更改为止(或者用户cookie过期)