Require featured image

时间:2013-01-29 作者:Morgan Kay

我想要求在一个网站上我正在开发一个特色形象。

我在这里尝试了代码:Make featured image required 但什么也没发生——JS出现在网站标题中,但我仍然可以在没有特色图片的情况下保存帖子,而且从未收到错误消息。

有几个插件可以做到这一点,如必填字段和WyPiekacz,但我需要做一些更复杂的事情。。。我有一个带有单选按钮的自定义元框。只有选中某个单选按钮时,我才需要一张特色图片。如果选中某些单选按钮,我已经需要一些其他字段(类别和一些自定义分类法),使用jQuery验证。

所以我想我可以把这归结为两个问题:

需要特色图片的好方法是什么?

如何将其集成到一些现有的验证中,并且仅在选择单选按钮时才需要特色图像?

问题1可能更容易回答,如果有人能回答#1,那么我可能可以自己找出#2。

2 个回复
最合适的回答,由SO网友:Morgan Kay 整理而成

下面是我最后做的:

      jQuery(\'#post\').submit(function() {
            if (jQuery(\'.force\').is(\':checked\')) {
              if (jQuery("#set-post-thumbnail").find(\'img\').size() > 0) {
                jQuery(\'#ajax-loading\').hide();
                jQuery(\'#publish\').removeClass(\'button-primary-disabled\');
                return true;
              }else{
                alert("Please set a Featured Image!");
                jQuery(\'#ajax-loading\').hide();
                jQuery(\'#publish\').addClass(\'button-primary-disabled\');
                return false;
              }
            }else{
              return true;
            }
            return false;
            });
就像我在对fischi的评论中所说的那样,我通常更喜欢使用像他的PHP方法,但在这种情况下,我的站点无论如何都依赖于很多jQuery验证,所以坚持使用JavaScript方法是有意义的。这对我来说很好。

SO网友:fischi

我会通过钩住save_post 操作,而不是javascript。

主要的想法是检查这两个值是否都存在(您的单选按钮被选中post_thumbnail ,如果没有,则将帖子设置为草稿,如果用户未满足要求,则显示信息。

首先,钩入save_post 操作,并检查单选按钮是否具有您的值,以及是否选择了Post缩略图。如果一切正常,则无需执行任何其他操作,但在特殊情况下,您必须阻止发布帖子,并显示错误消息以通知用户。

<?php
// this function checks if the checkbox and the thumbnail are present
add_action(\'save_post\', \'f711_option_thumbnail\');

function f711_option_thumbnail($post_id) {
    // get the value that is selected for your select, don\'t know the specifics here
    // you may need to check this value from the submitted $_POST data.
    $checkoptionvalue = get_post_meta( $post_id, "yourmetaname", true );
    if ( !has_post_thumbnail( $post_id ) && $checkoptionvalue == "yourvalue" ) {
        // set a transient to show the users an admin message
        set_transient( "post_not_ok", "not_ok" );
        // unhook this function so it doesn\'t loop infinitely
        remove_action(\'save_post\', \'f711_option_thumbnail\');
        // update the post set it to draft
        wp_update_post(array(\'ID\' => $post_id, \'post_status\' => \'draft\'));
        // re-hook this function
        add_action(\'save_post\', \'f711_option_thumbnail\');
    } else {
        delete_transient( "post_not_ok" );
    }
}

// add a admin message to inform the user the post has been saved as draft.

function showAdminMessages()
{
            // check if the transient is set, and display the error message
    if ( get_transient( "post_not_ok" ) == "not_ok" ) {
        // Shows as an error message. You could add a link to the right page if you wanted.
        showMessage("You need to select a Post Thumbnail if you choose this Option. Your Post was not published.", true);
                // delete the transient to make sure it gets shown only once.
        delete_transient( "post_not_ok" );
    }

}   
add_action(\'admin_notices\', \'showAdminMessages\');       
// function to display the errormessage
function showMessage($message, $errormsg = false)
{
    if ($errormsg) {
        echo \'<div id="message" class="error">\';
    }
    else {
        echo \'<div id="message" class="updated fade">\';
    }

    echo "<p><strong>$message</strong></p></div>";

}   


?>

结束

相关推荐

JQuery上的添加/删除操作切换

我有Ajax设置,我正在尝试切换一个函数,以避免加载到wp\\U头中。它适用于第一个切换函数,但第二个函数不注册。function av_maintenance_mode_turn_on() { if( !wp_verify_nonce( $_GET[\'nonce\'], \'av-maintenance-mode-nonce\' )) die( \'Go away!\'); if( add_action( \'get_header\', \'av_mai